@@ -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 ( / a r n : a w s ( - [ a - z ] + ) * : l a m b d a / ) ) {
0 commit comments