我有一个应用程序的旧模板,我正在尝试使用类似的参数在 AWS 中重建。我已成功将所有文件复制到我的帐户,并且工作正常,直到它必须创建 S3 存储桶并在其中引发错误 - 资源处理程序返回消息:
无法验证以下目标配置(服务:S3,状态代码:400,请求 ID:MV9SQ25WK1ZDNA89,扩展请求 ID tvWAt7vhcOeC1MOr07/wokB/CFwY3WJ+Mh38wgnH5oTHuNJc7Eq+kb/3iiJefRiHKnLQVI7zGpfvq9G0Ys ARmw==)”(请求令牌:52421cf8-e91e-f57a -54c4-6d90d8382023,HandlerErrorCode:InvalidRequest)
我尝试将 lambda 函数的权限添加到我的存储桶策略以及 IAM 用户,但仍然遇到相同的错误。
我的模板卡在这个
#S3 Bucket
ParamArchiveBucket:
Type: AWS::S3::Bucket
Description: "S3 Bucket to store Param archive videos"
Properties:
BucketName: !Sub ${ParamBucketName}-${Environment}
NotificationConfiguration:
LambdaConfigurations:
- Event: "s3:ObjectCreated:*"
Filter:
S3Key:
Rules:
- Name: "prefix"
Value: !Sub ${paramKey}
Function: !GetAtt LambdaFunctionArchiveParamSession.Arn
我已尝试按照 AWS 帮助台和网络上的建议添加权限和策略,但仍然无法解决该错误。有人可以帮助我理解错误并解决它吗?
您需要确保与 Lambda 函数关联的 IAM 角色具有 S3 存储桶调用所需的权限
将以下策略添加到 Lambda 函数的执行角色:
{
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:<Region>:<Account-ID>:function:<FunctionName>"
}
添加 AWS::Lambda::Permission 资源以显式允许 S3 存储桶调用 Lambda 函数:
LambdaInvokePermission:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !GetAtt LambdaFunctionArchiveParamSession.Arn
Action: "lambda:InvokeFunction"
Principal: "s3.amazonaws.com"
SourceArn: !Sub "arn:aws:s3:::${ParamBucketName}-${Environment}"