gpt4 book ai didi

amazon-web-services - 如何从 AWS SAM 启动 lambda 函数并将自定义 AWS IAM 角色分配给 lambda

转载 作者:行者123 更新时间:2023-12-03 07:29:20 27 4
gpt4 key购买 nike

现在,在我们的 CloudFormation 模板中,我们正在创建一些 lambda 函数,然后使用多个 Cloudformation 模板来执行自动化任务,以便单击部署我们的产品堆栈。以下是 CF lambda 资源的示例 CF 模板。

HelmLambda:
DependsOn: [ LambdaSGCleanup ]
Type: AWS::Lambda::Function
Properties:
Handler: lambda_function.lambda_handler
MemorySize: 512
Role: !Ref EKSProvisionRoleArn
Runtime: python3.7
Timeout: 900
Layers: [!Ref KubectlLayer, !Ref HelmLayer, !Ref CrhelperLayer]
Code:
S3Bucket: !Ref 'BucketName'
S3Key: !Sub '${KeyPrefix}functions/packages/Helm/lambda.zip'
HelmLayer:
Type: AWS::Lambda::LayerVersion
Properties:
Content:
S3Bucket: !Ref 'BucketName'
S3Key: !Sub '${KeyPrefix}functions/packages/helmLayer/lambda.zip'

在上面的 lambda 函数中,我们有两个依赖项。一是 IAM 角色和 Layer ARN。 IAM 角色和层 ARN 在运行时创建。

现在我们想将我们的产品放在 AWS-Marketplace 上,并且我们发现 AWS-Marketplace 指南不支持创建上述 lambda 函数。

我们正在考虑将 lambda 函数转换为 AWS SAM。但我们无法弄清楚如何使用在使用 AWS SAM 部署 CF 堆栈期间在运行时创建的 IAM 角色和 Layer Arn 并创建 lambda 函数。

对此的任何帮助或指导将不胜感激。

最佳答案

因此,如果您想按照 documentation 引用 SAM 创建的角色和图层您需要在模板中定义它们,下面是一个工作模板:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
sam-with-layers

Sample SAM Template for sam-with-layers

Resources:
LambdaRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub ${AWS::StackName}-lambda-role
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action: 'sts:AssumeRole'
Principal:
Service: lambda.amazonaws.com
Policies:
- PolicyName: WriteCloudWatchLogs
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- 'logs:CreateLogGroup'
- 'logs:CreateLogStream'
- 'logs:PutLogEvents'
Resource: 'arn:aws:logs:*:*:*'
HelloWorldFunction:
Type: AWS::Serverless::Functionn
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.8
Role: !GetAtt LambdaRole.Arn
Layers:
- !Ref MyLambdaLayer

MyLambdaLayer:
Type: AWS::Serverless::LayerVersion
Properties:
LayerName: MyLambdaLayer
ContentUri: lambda-layer/
CompatibleRuntimes:
- python3.8
RetentionPolicy: Retain

下面是我的目录结构:

.
├── README.md
├── hello_world
│   ├── app.py
│   └── requirements.txt
├── lambda-layer
│   └── python
│   └── lib
│   └── python3.8
│   └── site-packages
│   └── hello.py
├── samconfig.toml
└── template.yaml

关于amazon-web-services - 如何从 AWS SAM 启动 lambda 函数并将自定义 AWS IAM 角色分配给 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65590758/

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