无法使用 CLI 写入 AWS S3 存储桶

无法使用 CLI 写入 AWS S3 存储桶

我正在运行 Github CD 操作,它从我的仓库中获取一些文件并尝试将它们上传到我拥有的 S3 存储桶中。

该操作运行此命令:

/usr/bin/docker run --name e4f859ff89ec6549659693150859a75828_d1b6eb --label 5588e4 --workdir /github/workspace --rm -e AWS_S3_BUCKET -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_REGION -e SOURCE_DIR -e INPUT_ARGS -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/prepay-frontend/prepay-frontend":"/github/workspace" 5588e4:f859ff89ec6549659693150859a75828 --acl public-read --follow-symlinks --delete

出于隐私原因,AWS_S3_BUCKET、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY 和 AWS_REGION 都被混淆了,但我确信它们配置正确,因为我可以从我的 AWS 控制台中看到与 AWS_ACCESS_KEY_ID 关联的用户正在被使用。

问题是我收到这个错误:

上传失败:public/index.html 到 s3://***/index.html 调用 PutObject 操作时发生错误(AccessDenied):Access Denied

我不明白为什么,这是与用户相关的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::MY-bucket-name"]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": ["arn:aws:s3:::MY-bucket-name/*"]
        }
    ]
}

如果我没记错的话,该策略授予用户对存储桶 MY-bucket-name 上的文件的完全控制权。我这里遗漏了什么?

答案1

如果您将策略从 更改为s3:*Object进行s3:*测试以验证确实是该策略阻止了请求,结果会怎样?

也许有一个存储桶策略或 SCP 或策略边界干扰了请求。它们都不能拒绝访问才能成功。

希望有帮助:)

相关内容