Я столкнулся с проблемой при попытке использовать роль IAM для доступа к S3 в C #. Ниже приведены шаги, которые я сделал.
Создание политики AssumeRole службы STS: {"Version": "2012-10-17", "Statement": [{"Sid": "VisualEditor0", "Effect": "Allow"," Action ":" sts: AssumeRole "," Resource ":" arn: aws: iam :: 761612772509: role / S3TestRole "," Condition ": {" StringEquals ": {" aws: RequestedRegion ":" ap-northeast-1 "}}}]}
Создайте роль IAM (другая учетная запись AWS) и присоедините политику AssumeRole к этой роли: Роль ARN: arn: aws: iam :: 761612772509: role / S3TestRole And Trust Relationship, как показано на рисунке: введите описание изображения здесь введите описание изображения здесь
Активная область STS: введите описание изображения здесь
S3 Bucket Policy: {"Id": "Policy1573183227944", "Version": "2012-10-17", "Statement": [{"Sid": "Stmt1573183224129", "Action": "s3: ", "Effect": "Allow", "Resource": ["arn: aws: s3 ::: 20190830s3bucket", "arn: aws: s3 ::: 20190830s3bucket /"]," Principal ": {" AWS ": [" arn: aws: iam :: 761612772509: role / S3TestRole "]}}]}
try
{
AssumeRoleRequest assumeRequest = new AssumeRoleRequest
{
RoleArn = "arn:aws:iam::761612772509:role/S3TestRole",
DurationSeconds = 3600,
Policy = "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"VisualEditor0\",\"Effect\": \"Allow\",\"Action\": \"sts:AssumeRole\",\"Resource\": \"arn:aws:iam::761612772509:role/S3TestRole\",\"Condition\": {\"StringEquals\": {\"aws:RequestedRegion\": \"ap-northeast-1\"}}}]}",
};
AssumeRoleResult assumeRoleResult = new AmazonSecurityTokenServiceClient(RegionEndpoint.APNortheast1).AssumeRole(assumeRequest);
AWSCredentials tempCredentials = new SessionAWSCredentials(
assumeRoleResult.Credentials.AccessKeyId,
assumeRoleResult.Credentials.SecretAccessKey,
assumeRoleResult.Credentials.SessionToken);
s3Client = new AmazonS3Client(tempCredentials);
}
catch (Exception ex)
{
throw ex;
}
Мой регион находится в ap-northeast-1, и когда я выполняю метод acceptRoleResult, я всегда получаю" Маркер безопасностивключенный в запрос недействителен. "и InnerException - «Удаленный сервер возвратил ошибку: (403) запрещено». ошибки. Могу ли я узнать, что не так с моей конфигурацией или кодом? Заранее признателен за помощь!