Quando utilizzo l'API GetFederationToken per generare credenziali temporanee, la variabile della policy ${aws:userName} non funziona.
Soluzione
Quando l'elemento Principal è un utente federato, la variabile della policy ${aws:userName} AWS Identity and Access Management (IAM) non è presente nella richiesta. Utilizza invece la variabile della policy ${aws:userID} con le chiamate API GetFederationToken. Per ulteriori informazioni, consulta Dove è possibile utilizzare le variabili della policy.
Nel seguente esempio di policy JSON, la variabile di policy ${aws:userName} viene sostituita dalla variabile della policy ${aws:userID}:
{ "Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowListingOfUserFolder",
"Action":[
"s3:ListBucket"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::TESTBUCKET"
],
"Condition":{
"StringLike":{
"s3:prefix":[
"TESTBUCKET/${aws:userid}/*"
]
}
}
},
{
"Sid":"AllowAllS3ActionsInUserFolder",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::TESTBUCKET/${aws:userid}/*"
]
}
]
}
Il valore della variabile aws:userid deve essere ACCOUNTNUMBER:caller-specified-name.
Il valore del parametro Name per le chiamate API GetFederationToken deve seguire le linee guida GetFederationToken. Ad esempio, se si specifica il nome descrittivo Bob, il formato corretto è 123456789102:Bob. Questo formato assegna un nome alla sessione e consente l'accesso al bucket Amazon Simple Storage Service (Amazon S3) con un prefisso corrispondente.
Nota: l'esempio precedente presuppone che il nome descrittivo specificato dal chiamante della variabile aws:userid sia un identificatore univoco. Un nome descrittivo univoco non consente a un altro utente con lo stesso nome descrittivo di accedere alle risorse specificate nella policy JSON.
Informazioni correlate
Autorizzazioni per GetFederationToken
Elementi della policy IAM: variabili e tag
Identificatori IAM