Skip to content

Commit 4301954

Browse files
committed
add policy to read bucket
1 parent 9fc8238 commit 4301954

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

lib/deploy/stepFunctions/compileIamRole.js

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -586,33 +586,40 @@ function getS3ObjectPermissions(action, state) {
586586
const bucket = state.Parameters.Bucket || '*';
587587
const key = state.Parameters.Key || '*';
588588
const prefix = state.Parameters.Prefix;
589-
let resource;
589+
let arn;
590590

591-
if (action === 's3:AmazonS3ReadOnlyAccess') {
592-
action = [
593-
's3:Get*',
594-
's3:List*',
595-
's3:Describe*',
596-
's3-object-lambda:Get*',
597-
's3-object-lambda:List*'
598-
];
599-
resource = [
600-
`arn:aws:s3:::${bucket}`,
601-
`arn:aws:s3:::${bucket}/*`
591+
if (action === 's3:listObjectsV2') {
592+
return [
593+
{
594+
action: 's3:Get*',
595+
resource: [
596+
`arn:aws:s3:::${bucket}`,
597+
`arn:aws:s3:::${bucket}/*`
598+
]
599+
},
600+
{
601+
action: 's3:List*',
602+
resource: [
603+
`arn:aws:s3:::${bucket}`,
604+
`arn:aws:s3:::${bucket}/*`
605+
]
606+
}
602607
];
608+
}
609+
610+
if (prefix) {
611+
arn = `arn:aws:s3:::${bucket}/${prefix}/${key}`;
603612
} else if (bucket === '*' && key === '*') {
604-
resource = '*';
605-
} else if (prefix & key) {
606-
resource = `arn:aws:s3:::${bucket}/${prefix}/${key}`;
607-
} else if (prefix) {
608-
resource = `arn:aws:s3:::${bucket}/${prefix}`;
613+
arn = '*';
609614
} else {
610-
resource = `arn:aws:s3:::${bucket}/${key}`;
615+
arn = `arn:aws:s3:::${bucket}/${key}`;
611616
}
612617

613618
return [{
614619
action,
615-
resource,
620+
resource: [
621+
arn,
622+
],
616623
}];
617624
}
618625

@@ -751,7 +758,7 @@ function getIamPermissions(taskStates) {
751758
return getS3ObjectPermissions('s3:PutObject', state);
752759
case 'arn:aws:states:::s3:listObjectsV2':
753760
case 'arn:aws:states:::aws-sdk:s3:listObjectsV2':
754-
return getS3ObjectPermissions('s3:AmazonS3ReadOnlyAccess', state);
761+
return getS3ObjectPermissions('s3:listObjectsV2', state);
755762

756763
default:
757764
if (isIntrinsic(state.Resource) || !!state.Resource.match(/arn:aws(-[a-z]+)*:lambda/)) {

0 commit comments

Comments
 (0)