<AccessDenied> при попытке использовать сервис токена сеанса acceptRole для предоставления временного доступа к S3 - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь использовать лямбда-функцию для генерации временных учетных данных S3 с использованием STS acceptRole.

Для этого я создал роль в учетной записи, роль которой имеет AmazonS3FullAccess

MyRole:
  Type: AWS::IAM::Role
  Properties:
    RoleName: my-role
    AssumeRolePolicyDocument:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Principal:
            Service: s3.amazonaws.com
          Action: sts:AssumeRole
    ManagedPolicyArns:
      - arn:aws:iam::aws:policy/AmazonS3FullAccess

Для лямбды я установил дополнительное разрешение, которое выглядит так:

- Version: "2012-10-17"
  Statement:
    - Effect: Allow
      Action: sts:AssumeRole
      Resource: !GetAtt MyRole.Arn # references the role above

Из лямбды я пытаюсь вызвать sts.assumeRole так:

const sts = new AWS.STS();
const userId = 'asdf';

const releasePolicy = `{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::${Bucket}/${userId}/*"
      ]
    }
  ]
}`;

const role = {
  RoleArn: process.env.ROLE,
  Policy: releasePolicy,
  RoleSessionName: 'client-session',
  DurationSeconds: 3600,
};

sts.assumeRole(role, (err, data) => {
  if (err) console.log(err);

  console.log(data);
});

Но независимо от того, что я делаю, я, похоже, продолжаю получать ту же ошибку:

"errorMessage": "User: arn:aws:sts::xxxxx:assumed-role/xxxxx-xxxxx-xxxxx/xxxxx-xxxxx-xxxxx is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::xxxxx:role/my-role",
"code": "AccessDenied",
...