我希望授予我的ec2实例对s3桶的访问权。
在这个ec2实例上,启动一个带有我的应用程序的容器。现在,我没有获得s3桶的许可。
这是我的水桶政策
{
"Version": "2012-10-17",
"Id": "Policy1462808223348",
"Statement": [
{
"Sid": "Stmt1462808220978",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::714656454815:role/ecsInstanceRole"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "private-ip/32"
}
}
}
]
}但在我给水桶每个人访问它的许可之前,它是行不通的。
我试图在s3桶中从ec2实例中压缩文件,但这也不起作用。
发布于 2016-05-11 04:42:50
没有将"EC2“实例访问AWS服务器的直接方法,但您可以尝试以下方法。
sudo ln -s $AWS_CREDENTIAL_PROFILES_FILE /usr/share/tomcat6/.aws/credentials之间创建一个符号链接。 AWSCredentials credentials = null;
try {
credentials = new ProfileCredentialsProvider().getCredentials();
} catch (Exception e) {
LOG.error("Unable to load credentials " + e);
failureMsg = "Cannot connect to file server.";
throw new AmazonClientException(
"Cannot load the credentials from the credential profiles file. " +
"Please make sure that your credentials file is at the correct " +
"location (environment variable : AWS_CREDENTIAL_PROFILES_FILE), and is in valid format.",
e);
}
AmazonS3 s3 = new AmazonS3Client(credentials);
Region usWest2 = Region.getRegion(Regions.US_WEST_2);
s3.setRegion(usWest2);
ObjectListing objectListing = s3.listObjects(new ListObjectsRequest().withBucketName(bucketName).withPrefix(prefix));其中bucketName =你的桶名
和前缀=存储桶中的文件夹结构,其中包含文件
希望这能有所帮助。另外,如果您不使用Java,也可以在其他编程语言中查看AWS。
发布于 2019-03-06 21:45:40
至少现在,2019年,有一种更简单、更简洁的方法(凭据不必存储在实例中,而是可以自动查询它们):
aws s3 cp <S3Uri> <LocalPath> )@2:允许对S3桶中的对象进行读写访问的JSON策略示例如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::bucket-name"]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": "s3:*Object",
"Resource": ["arn:aws:s3:::bucket-name/*"]
}
]
}您必须调整允许的操作,并替换“桶名”。
发布于 2016-05-10 10:34:35
我发现了..。
它只适用于来自ec2实例的公共IP。
https://stackoverflow.com/questions/37134603
复制相似问题