尝试列出存储桶时,.net AWS SDK的访问被拒绝

问题描述 投票:1回答:1

我遇到的问题是我试图简单地使用.net C#SDK为AWS S3列出存储桶,但我总是得到一个拒绝访问的例外。我在Windows 10上工作。

错误消息是:Amazon.S3.AmazonS3Exception: 'Access Denied'

我的C#代码是:

namespace AwsEmptyApp1
{
    class Program
    {
        public static void Main(string[] args)
        {

            IAmazonS3 client = new AmazonS3Client();

            ListBucketsResponse response = client.ListBuckets();
            foreach (S3Bucket b in response.Buckets)
            {
                Console.WriteLine("{0}\t{1}", b.BucketName, b.CreationDate);
            }

            Console.Read();
        }
    }
}

我尝试手动设置代理:

AmazonS3Config config = new AmazonS3Config();
config.RegionEndpoint = //ENDPOINT
config.ProxyHost = //Proxy http://USERNAME:PASSWORD@PROXYIP:PROXYPORT

要么:

AmazonS3Config config = new AmazonS3Config();
config.RegionEndpoint = //ENDPOINT
config.ProxyHost = //Proxy http://PROXYIP:PROXYPORT 
config.ProxyPort = 8080;
config.ProxyCredentials = new NetworkCredential(user, pw);

奇怪的是它正在使用本地CLI。 aws s3api head-bucket --bucket [BUCKETNAME]正在工作。 aws s3 ls [BUCKET]工作得很好。我也可以在web界面中看到所有数据。

我用aws sts get-caller-identityaws configure list的证书检查了我的角色,一切都很好。

我在代理背后工作。代理设置在我的用户和系统变量HTTP_PROXYHTTPS_PROXY中以http://USERNAME:PASSWORD@PROXYIP:PROXYPORT格式设置。

我的AWS凭证存储在C:\Users\[User]\.aws\credentials

你有什么建议吗?

谢谢! :)

c# .net amazon-web-services amazon-s3
1个回答
-1
投票

解决了:)

我有一个本地的app.config文件,我必须声明要使用的凭证文件中的哪个配置文件和以下区域:

<?xml version="1.0"?>
<configuration>
    <appSettings>
    <add key="AWSProfileName" value="name"/>
        <add key="AWSRegion" value="region" />
    </appSettings>
  <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

然后我在凭证文件中添加了role_arn=并且它有效(只需在NugGet中安装AWSSDK.SecurityToken,因为它也缺失了)

© www.soinside.com 2019 - 2024. All rights reserved.