@@ -586,33 +586,40 @@ function getS3ObjectPermissions(action, state) {
586
586
const bucket = state . Parameters . Bucket || '*' ;
587
587
const key = state . Parameters . Key || '*' ;
588
588
const prefix = state . Parameters . Prefix ;
589
- let resource ;
589
+ let arn ;
590
590
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
+ }
602
607
] ;
608
+ }
609
+
610
+ if ( prefix ) {
611
+ arn = `arn:aws:s3:::${ bucket } /${ prefix } /${ key } ` ;
603
612
} 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 = '*' ;
609
614
} else {
610
- resource = `arn:aws:s3:::${ bucket } /${ key } ` ;
615
+ arn = `arn:aws:s3:::${ bucket } /${ key } ` ;
611
616
}
612
617
613
618
return [ {
614
619
action,
615
- resource,
620
+ resource : [
621
+ arn ,
622
+ ] ,
616
623
} ] ;
617
624
}
618
625
@@ -751,7 +758,7 @@ function getIamPermissions(taskStates) {
751
758
return getS3ObjectPermissions ( 's3:PutObject' , state ) ;
752
759
case 'arn:aws:states:::s3:listObjectsV2' :
753
760
case 'arn:aws:states:::aws-sdk:s3:listObjectsV2' :
754
- return getS3ObjectPermissions ( 's3:AmazonS3ReadOnlyAccess ' , state ) ;
761
+ return getS3ObjectPermissions ( 's3:listObjectsV2 ' , state ) ;
755
762
756
763
default :
757
764
if ( isIntrinsic ( state . Resource ) || ! ! state . Resource . match ( / a r n : a w s ( - [ a - z ] + ) * : l a m b d a / ) ) {
0 commit comments