Wenn ich die getFederationToken-API verwende, um temporäre Anmeldeinformationen zu generieren, funktioniert die Richtlinienvariable ${aws:username} nicht.
Lösung
Wenn das Prinzipal-Element ein Verbundbenutzer ist, ist die ${aws:UserName} AWS-Richtlinienvariable für Identity and Access Management (IAM) nicht in der Anfrage enthalten. Verwenden Sie stattdessen die ${aws:userId}-Richtlinienvariable mit GetFederationToken-API-Aufrufen. Weitere Informationen finden Sie unter Wo Sie Richtlinienvariablen verwenden können.
Im folgenden JSON-Richtlinienbeispiel wird die Richtlinienvariable ${aws:UserName} durch die Richtlinienvariable ${aws:userID} ersetzt:
{ "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}/*"
]
}
]
}
Der Wert für die Variable aws:userid muss ACCOUNTNUMBER:caller-specified-name lauten.
Der Name-Parameterwert für GetFederationToken-API-Aufrufe muss den GetFederationToken-Richtlinien entsprechen. Wenn Sie beispielsweise den Anzeigenamen Bob angeben, lautet das richtige Format 123456789102:Bob. Dadurch wird Ihre Sitzung benannt und der Zugriff auf den Amazon Simple Storage Service (Amazon S3)-Bucket mit einem passenden Präfix ermöglicht.
**Hinweis:**Im vorherigen Beispiel wird davon ausgegangen, dass der vom Aufrufer angegebene freundliche Name der Variablen aws:userid ein eindeutiger Identifikator ist. Ein eindeutiger Anzeigename ermöglicht einem anderen Benutzer mit demselben Anzeigenamen keinen Zugriff auf Ressourcen, die in der JSON-Richtlinie angegeben sind.
Ähnliche Informationen
Berechtigungen für GetFederationToken
Elemente der IAM-Richtlinie: Variablen und Tags
IAM-Identifikatoren