Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该如何使用IAM角色访问C中的S3#_C#_Amazon S3_Amazon Iam_Roles - Fatal编程技术网

C# 我应该如何使用IAM角色访问C中的S3#

C# 我应该如何使用IAM角色访问C中的S3#,c#,amazon-s3,amazon-iam,roles,C#,Amazon S3,Amazon Iam,Roles,我在尝试使用IAM角色访问C#中的S3时遇到了一个问题。下面是我所做的步骤 创建STS AssumeRole策略: { “版本”:“2012-10-17”, “声明”:[ { “Sid”:“VisualEditor0”, “效果”:“允许”, “行动”:“sts:假设角色”, “资源”:“arn:aws:iam::761612772509:role/S3TestRole”, “条件”:{ “StringEquals”:{ “aws:RequestedRegion”:“ap-northeast-1

我在尝试使用IAM角色访问C#中的S3时遇到了一个问题。下面是我所做的步骤

  • 创建STS AssumeRole策略: { “版本”:“2012-10-17”, “声明”:[ { “Sid”:“VisualEditor0”, “效果”:“允许”, “行动”:“sts:假设角色”, “资源”:“arn:aws:iam::761612772509:role/S3TestRole”, “条件”:{ “StringEquals”:{ “aws:RequestedRegion”:“ap-northeast-1” } } } ] }

  • 创建IAM角色(AWS其他帐户)并将AssumeRole策略附加到此角色: 角色ARN:ARN:aws:iam::761612772509:Role/S3TestRole 信任关系如图所示:

  • 活动STS区域:

  • S3桶策略: { “Id”:“保单1573183227944”, “版本”:“2012-10-17”, “声明”:[ { “Sid”:“STMT157323224129”, “行动”:“s3:”, “效果”:“允许”, “资源”:[ “arn:aws:s3:::20190830S3桶”, “arn:aws:s3:::20190830S3桶/” ], “委托人”:{ “AWS”:[ “arn:aws:iam::761612772509:role/S3TestRole” ] } } ] }


  • 我的区域位于ap-northeast-1,当执行assumeRoleResult方法时,我总是得到“请求中包含的安全令牌无效”。InnerException是“远程服务器返回错误:(403)禁止”。错误。我可以知道我的配置或代码有什么问题吗?提前感谢您的帮助

    确保该区域的STS已激活。请参见此处:是的,我激活了此区域中的STS,并在策略中添加了一个区域请求条件。但错误似乎仍然存在…请确保该区域的STS已激活。请参见此处:是的,我激活了此区域中的STS,并在策略中添加了一个区域请求条件。但似乎错误仍然存在。。。
    
       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;
                }