Я пытаюсь использовать лямбда-функцию для генерации временных учетных данных 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",