首页 文章

如何在没有API密钥的情况下导入Amazon S3存储桶?

提问于
浏览
0

根据我的研究,似乎S3存储桶通常是从API Key发起的同一AWS账户下载的 .

我已获得访问新AWS账户的权限,此帐户包含我需要每天下载的S3存储桶 . 问题是我的API密钥与另一个AWS账户相关联 . 有没有办法将新的S3存储桶导入我现有的AWS账户,或者尝试在已经拥有我需要的S3存储桶的AWS账户上创建新的API密钥更简单?

我正在使用python和boto3 . 谢谢!

1 回答

  • 0

    Amazon S3存储桶的所有者可以添加存储桶策略,以便公开或特定AWS用户(包括来自其他AWS账户的用户)授予访问权限 . 这样,您可以使用帐户A中的凭据访问帐户B中的存储桶 .

    例如,此Bucket Policy授予对其他帐户中用户的访问权限:

    {
      "Id": "S3Access",
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "DownloadFiles",
          "Action": [
            "s3:GetObject"
          ],
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::my-bucket/*",
          "Principal": {
            "AWS": [
              "arn:aws:iam::123456789012:user/fred"
            ]
          }
        },
        {
          "Sid": "ListFiles",
          "Action": [
            "s3:ListBucket"
          ],
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::my-bucket",
          "Principal": {
            "AWS": [
              "arn:aws:iam::123456789012:user/fred"
            ]
          }
        }
      ]
    }
    

    可以通过查看IAM管理控制台内的IAM用户来获取ARN .

    我不建议每次下载整个存储桶,而是使用AWS Command-Line Interface (CLI),它有一个方便的 aws s3 sync 命令 . 这可以将文件与Amazon S3同步,并且只复制自上次同步以来添加或修改的文件 . 您可以定期运行它(例如每小时)以获得桶的本地副本,与DropBox的概念类似 .

相关问题