首页 > 解决方案 > 如何获取在其中运行的 ECS 实例的 AWS IAM 凭证 - 使用 Java?

问题描述

我正在努力让 S3Client 具有运行在其中的 ECS 实例的凭据。

ECS 实例的策略和信任如下 - 我认为这没问题

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:PutObject*",
            "Resource": [
                "arn:aws:s3:::myBucket",
                "arn:aws:s3:::/*"
            ]
        }
    ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]

我不知道如何获得客户端 - 在.net 世界中我会使用

s3Client = Amazon.AWSClientFactor.CreateAmazonS3Client()

但我需要在 Java 中执行此操作 - 我尝试了多种方法,但总是被“拒绝”

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

任何人都可以指出正确的方法和文档吗?

标签: javaamazon-web-servicesamazon-ec2amazon-iam

解决方案


您使用的 IAM 策略不正确,特别是resource. 要指示 myBucket 中的所有对象,请使用以下命令:

"Resource": "arn:aws:s3:::myBucket/*"

推荐阅读