Quando eu uso a API GetFederationToken para gerar credenciais temporárias, a variável de política ${aws:Username} não funciona.
Resolução
Quando o elemento Principal é um usuário federado, a variável de política ${aws:userName} do AWS Identity and Access Management (IAM) não está na solicitação. Em vez disso, use a variável de política ${aws:userID} com chamadas de API GetFederationToken. Para obter mais informações, consulte Onde você pode usar variáveis de política.
No exemplo de política JSON a seguir, a variável de política ${aws:userName} é substituída pela variável de política ${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}/*"
]
}
]
}
O valor da variável aws:userid deve ser ACCOUNTNUMBER:caller-specified-name.
O valor do parâmetro Name para chamadas da API GetFederationToken deve seguir as diretrizes de GetFederationToken. Por exemplo, se você especificar o nome amigável Bob, o formato correto será 123456789102:Bob. Esse formato nomeia sua sessão e permite acesso ao bucket do Amazon Simple Storage Service (Amazon S3) que tem um prefixo correspondente.
Observação: o exemplo anterior pressupõe que o nome amigável especificado pelo chamador da variável aws:userid seja um identificador exclusivo. Um nome amigável exclusivo não permite que outro usuário com o mesmo nome amigável acesse os recursos especificados na política JSON.
Informações relacionadas
Permissões para GetFederationToken
Elementos de política do IAM: variáveis e etiquetas
Identificadores do IAM