簡體   English   中英

Docker EC2中的容器無法通過AWS將數據寫入AWS S3 SDK

[英]Docker container in EC2 is unable to write data into AWS S3 through AWS SDK

我有一台 docker 機器在 AWS EC2 實例上運行。 它假設通過 SDK 客戶端將數據上傳到 S3。

  1. docker 機器在 EC2 實例中創建並使用以下命令
--driver amazonec2 \
--amazonec2-open-port ${open-port} \
--amazonec2-region ${region} \
--amazonec2-access-key ${access-key} \
--amazonec2-secret-key ${secret-key} \
--amazonec2-instance-type ${instance_type} \
--amazonec2-ami ${this.ami} \
--amazonec2-security-group ${security_group_name} \
--swarm \
--swarm-discovery token://${swarm_join_token} \
--swarm-addr ${ip_address};
  1. 我使用 S3fullAccess 創建了 IAM 用戶,還允許公共訪問S3 完全訪問屏幕截圖

公共訪問屏幕截圖

  1. S3 存儲桶策略是
    "Version": "2012-10-17",
    "Id": "Policyxxx",
    "Statement": [
        {
            "Sid": "Stmtxxx",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::xxx"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::xxx",
                "arn:aws:s3:::xxx/*"
            ]
        }
    ]
}

它一直顯示error: AccessDenied: Access Denied 有人能幫我嗎?

從 EC2 實例上運行的容器對 S3 的訪問不是由您的 IAM 用戶憑證決定的。 相反,您應該為具有 S3 權限的實例設置 IAM 角色/配置文件,然后使用選項為您的docker-machine提供角色/配置文件名稱:

--amazonec2-iam-instance-profile

如果您使用AWS CLI 或 SDK ,實例的權限將在容器內可用。

代替存儲桶策略,將S3 權限添加到實例角色更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM