Cloudformation snippet for the role
我正在使用AWS lambda cloudformation创建无服务器架构模型(SAM)。我有两个Lambda:前端Lambda和后端Lambda。前端Lambda在帐户A中,后端Lambda在帐户B中。前端Lambda从S3渲染UI的静态文件。当必须执行后端数据处理时,应在另一个AWS帐户中调用后端Lambda。我确实在两个帐户中都扮演过角色,并且也信任两个帐户。它仍然无法调用后端lambda。 如何使用cloudformation模板调用后端lambda。
答案 0 :(得分:0)
后端:
您的后端Lambda需要授予前端Lambda调用权限:
BackEndLambdaPermission:
Type: AWS::Lambda::Permission
Properties:
Action: 'lambda:InvokeFunction'
FunctionName:
Fn::GetAtt:
- BackEndLambda
- Arn
Principal: <enter principal>
SourceArn: <front end lambda arn is optional but recommended>
前端:
前端,您需要授予调用其他功能的权限(这取决于Serverlam :: Function或Iam :: Role的“策略”部分,具体取决于lambda的设置方式):
- Effect: Allow
Action:
- 'lambda:InvokeFunction'
Resource: "arn:aws:lambda:us-east-1:123456789012:function:function-name"
将函数arn传递到Environment
属性中的前端lambda中:
Environment:
Variables:
BackEndFunctionArn:"arn:aws:lambda:us-east-1:123456789012:function:function-name"
从前端lambda的代码中调用后端lambda(python示例):
def invoke_back_end(event):
event = {"data": "Hello back end"}
function_arn = os.environ.get("BackEndFunctionArn")
client = boto3.client('lambda')
# "RequestResponse" is a synchronous invocation. Use "Event" for async
response = client.invoke(FunctionName=function_arn, Payload=json.dumps(event), InvocationType='RequestResponse')
return response