我有一個 dockerized NodeJS 應用程式,我將影像放在 AWS ECR 中。它使用 docker-compose 在我的本地環境中運行良好,我可以生成一個預簽名的 PUT URL。預簽名的 URL 也有效,我可以將物件上傳到其中。我嘗試使用 ECS Fargate 運行相同的 ECR 映像,但是我無法將該物件放入生成的預簽名 URL 中。我收到拒絕訪問錯誤。
編輯:我懷疑問題來自 IAM 角色和權限。我通過 CloudFormation 構建了 ECS Fargate 基礎設施,但似乎角色設定正確:
ECSTaskExecutionRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub "${ContainerName}-ECSTaskExecutionRolePolicy"
Path: /
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service: ecs-tasks.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
Policies:
- PolicyName: root
PolicyDocument:
Version: 2012-10-17
Statement:
- Resource:
- !Ref DBHostSSMARN
- !Ref DBPortSSMARN
- !Ref DBUsernameSSMARN
- !Ref DBPasswordSSMARN
Effect: Allow
Action:
- "ssm:GetParameters"
- "secretsmanager:GetSecretValue"
- "kms:Decrypt"
- Resource: "*"
Effect: Allow
Action:
- cloudwatch:*
- ecr:GetDownloadUrlForLayer
- ecr:BatchGetImage
- ecr:BatchCheckLayerAvailability
- Resource:
- !Sub arn:aws:s3:::${VideoRepoName}
- !Sub arn:aws:s3:::${VideoRepoName}/*
Effect: Allow
Action:
- s3:*
uj5u.com熱心網友回復:
我已將 S3 權限分配給錯誤的角色。我應該將 S3 權限授予任務角色,而不是任務執行角色。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/346553.html
標籤:节点.js 码头工人 亚马逊-s3 亚马逊-ecs aws-fargate
