gpt4 book ai didi

amazon-web-services - 使用 InstanceProfileCredentialsProvider 是否是从 Ec2 实例连接到 AWS S3 的正确方法?

转载 作者:行者123 更新时间:2023-12-05 07:39:37 27 4
gpt4 key购买 nike

在我的代码运行之前,我将存储桶策略设置得过于开放。

{
"Version": "2012-10-17",
"Id": "Policy15",
"Statement": [
{
"Sid": "Stmt1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bcktName",
"arn:aws:s3:::bcktName/*"
]
}
]
}

我正在使用 Elastic BeanStalk,后者又使用 AWS Ec2。Ec2 实例具有 aws-elasticbeanstalk-ec2-role,它提供了对 S3 的完全访问权限(我知道完全访问权限是危险的)。

我在部署到 Ec2 的 Web 应用程序中使用以下 Java 代码。

AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new InstanceProfileCredentialsProvider(false))
.build();
versionId = s3Client.putObject(new PutObjectRequest("bucketName", name, convFile))
.getVersionId();

1) 这是在 Java 代码中从 Ec2 连接到 S3 的正确方法吗?2) This文档让我感到困惑,因为我不确定是否必须设置环境变量和/或 Java 系统属性和/或默认凭证配置文件和/或 Amazon ECS 容器凭证和/或实例配置文件凭证?

请帮帮我。我被这个问题困扰了将近一个星期。

附言:以下是分配给我的配置文件的 ec2InstanceRole

Role ARN  arn:aws:iam::111111111111:role/aws-elasticbeanstalk-ec2-role
Role description
Instance Profile ARNs arn:aws:iam::111111111111:instance-profile/aws-elasticbeanstalk-ec2-role
Path /
Creation time 2017-10-17 11:27 PDT

分配给上述角色的策略是

  AmazonS3FullAccess
AWSElasticBeanstalkWebTier
AWSElasticBeanstalkMulticontainerDocker
AWSElasticBeanstalkWorkerTier

最佳答案

虽然您的代码应该按原样工作,但您可以将这部分全部删除:.withCredentials(new InstanceProfileCredentialsProvider(false)) 如果您不这样做,适用于 Java 的 AWS 开发工具包将自动获取实例配置文件' 指定任何凭据设置。你可以这样做:

AmazonS3 s3Client = AmazonS3ClientBuilder.standard().build();

如果这不起作用,请尝试从 S3 存储桶中完全删除存储桶策略。您不需要存储桶策略来允许使用 IAM 实例配置文件的服务器访问存储桶,如果您的存储桶策略中有拼写错误或其他内容,它可能会破坏内容。

如果这不起作用,请将分配给 IAM 实例配置文件的 IAM 策略添加到您的问题中。

关于amazon-web-services - 使用 InstanceProfileCredentialsProvider 是否是从 Ec2 实例连接到 AWS S3 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46996035/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com