gpt4 book ai didi

amazon-iam - 使用现有 S3 存储桶触发 Lambda 函数时如何避免授予 `iam:CreateRole` 权限?

转载 作者:行者123 更新时间:2023-12-04 15:39:41 27 4
gpt4 key购买 nike

我正在尝试部署一个 AWS Lambda 函数,该函数在将 AVRO 文件写入现有 S3 存储桶时触发。

我的 serverless.yml配置如下:

service: braze-lambdas

provider:
name: aws
runtime: python3.7
region: us-west-1
role: arn:aws:iam::<account_id>:role/<role_name>
stage: dev
deploymentBucket:
name: serverless-framework-dev-us-west-1
serverSideEncryption: AES256

functions:
hello:
handler: handler.hello
events:
- s3:
bucket: <company>-dev-ec2-us-west-2
existing: true
events: s3:ObjectCreated:*
rules:
- prefix: gaurav/lambdas/123/
- suffix: .avro

当我跑 serverless deploy ,我收到以下错误:
ServerlessError: An error occurred: IamRoleCustomResourcesLambdaExecution - API: iam:CreateRole User: arn:aws:sts::<account_id>:assumed-role/serverless-framework-dev/jenkins_braze_lambdas_deploy is not authorized to perform: iam:CreateRole on resource: arn:aws:iam::<account_id>:role/braze-lambdas-dev-IamRoleCustomResourcesLambdaExec-1M5QQI6P2ZYUH. 

我看到一些提到无服务器需要 iam:CreateRole由于 CloudFormation 的工作方式,但如果我想使用 existing: true,任何人都可以确认这是否是唯一的解决方案?除了使用在框架添加对 existing: true 的支持之前使用的旧无服务器插件之外,还有其他解决方法吗?配置?

还有,什么是 1M5QQI6P2ZYUHarn:aws:iam::<account_id>:role/braze-lambdas-dev-IamRoleCustomResourcesLambdaExec-1M5QQI6P2ZYUH ?它是一个随机标识符吗?这是否意味着每次我尝试部署 Lambda 函数时,Serverless 都会尝试创建一个新的 IAM 角色?

最佳答案

我刚刚遇到了这个,并克服了它。
我还有一个 lambda,我想将 s3 事件附加到已经存在的存储桶。
我的工作地点最近通过使用 Permission Boundaries 加强了 AWS 账户安全。 .
所以我在部署过程中遇到了非常相似的错误

  Serverless Error ---------------------------------------

An error occurred: IamRoleCustomResourcesLambdaExecution - API: iam:CreateRole User: arn:aws:sts::XXXXXXXXXXXX:assumed-role/xx-crossaccount-xx/aws-sdk-js-1600789080576 is not authorized to perform: iam:CreateRole on resource: arn:aws:iam::XXXXXXXXXXXX:role/my-existing-bucket-IamRoleCustomResourcesLambdaExec-LS075CH394GN.
如果您阅读 Using existing buckets在无服务器站点上,它说

NOTE: Using the existing config will add an additional Lambda function and IAM Role to your stack. The Lambda function backs-up the Custom S3 Resource which is used to support existing S3 buckets.


在我的情况下,我需要进一步自定义无服务器创建的这个额外角色,以便它也被分配了我的雇主定义的权限边界,所有角色都应该存在。这发生在 resources:部分。
如果您的雇主使用权限边界,您显然需要知道要使用的正确 ARN
resources:
Resources:
IamRoleCustomResourcesLambdaExecution:
Type: AWS::IAM::Role
Properties:
PermissionsBoundary: arn:aws:iam::XXXXXXXXXXXX:policy/xxxxxxxxxxxx-global-boundary
关于无服务器的一些信息 Resources配置
看看你自己的 serverless.yaml ,您可能已经在 provider 中定义了权限边界。部分。如果是这样,您会在 rolePermissionsBoundary 下找到它,这是在我认为无服务器的 1.64 版中添加的
provider:
rolePermissionsBoundary: arn:aws:iam::XXXXXXXXXXXX:policy/xxxxxxxxxxxx-global-boundary
如果是这样,您应该能够在 resources: 中使用该 ARN。我在这里发布的示例。

关于amazon-iam - 使用现有 S3 存储桶触发 Lambda 函数时如何避免授予 `iam:CreateRole` 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58279355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com