我正在使用無服務器框架,當我嘗試訪問私有存盤桶上的簽名 URL 以獲取以下配置的 GET 和 PUT 時,出現訪問被拒絕錯誤。但是,當我為 iam.role.statements[0].Resource 下的 Resource 授予 * 時(而不是顯式參考 private-bucket),它作業得非常好。我做錯了什么以及無需授予“*”權限而只需授予私有存盤桶權限的最佳方法是什么?
provider:
name: aws
runtime: nodejs12.x
lambdaHashingVersion: '20201221'
iam:
role:
statements:
- Effect: 'Allow'
Action:
- 's3:GetObject'
- 's3:PutObject'
Resource:
- Fn::GetAtt:
- PrivateBucket
- Arn
resources:
Resources:
PrivateBucket:
Type: AWS::S3::Bucket
DeletionPolicy: Retain
Properties:
BucketName: private-bucket
OwnershipControls:
Rules:
- ObjectOwnership: BucketOwnerEnforced
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
CorsConfiguration:
CorsRules:
- AllowedHeaders:
- '*'
AllowedMethods:
- GET
- PUT
AllowedOrigins:
- '*'
uj5u.com熱心網友回復:
您需要允許存盤桶和資源。
嘗試通過以下方式添加資源權限:
Resource:
- !Sub arn:aws:s3:::${MyS3Bucket}
- !Sub arn:aws:s3:::${MyS3Bucket}/*
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/427859.html
標籤:亚马逊网络服务 亚马逊-s3 aws-lambda 无服务器框架
上一篇:如何評估安全組規則?
