使Lambda Arn进入资源:类型:AWS :: Lambda :: Permission

时间:2019-12-04 13:45:32

标签: amazon-cloudformation serverless-framework

我的无服务器yml文件中包含以下内容:

func TouchFile(name string) error {
    file, err := os.OpenFile(name, os.O_RDONLY|os.O_CREATE, 0644)
    if err != nil {
        return err
    }
    file.Close()
}

在“输出”部分中有以下内容:

lambdaQueueFirstInvokePermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName: ServiceLambdaFunctionQualifiedArn
    Action: ‘lambda:InvokeFunction’
    Principal: sqs.amazonaws.com

这返回一条消息:  Outputs: ServiceLambdaFunctionQualifiedArn: Value: ‘Fn::GetAtt’: [ lambdaQueueFirst, Arn ]

我想念什么吗?因为在帮助或示例方面很少... 另外,将lambda arn放入权限代码是否更好?如果是这样,那是什么?

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

ConcatOH['Count'] = ConcatOH['Units_OH'].str.count('_[1-9]_[0]_')

参考: https://github.com/andymac4182/serverless_example

答案 1 :(得分:0)

您可以使用环境变量来构造ARN值。就您而言,您可以在提供者部分中定义一个变量,如下所示。您可能需要根据您的应用程序进行一些修改。

service: serverless App2
provider:
  name: aws
  runtime: python3.6
  region: ap-southeast-2
  stage: dev
  environment:
    AWS_ACCOUNT: 1234567890 # use your own AWS ACCOUNT number here

    # define the ARN of the function that you want to invoke
    FUNCTION_ARN: "arn:aws:lambda:${self:provider.region}:${self:provider.environment.AWS_ACCOUNT}:function:${self:service}-${self:provider.stage}-lambdaQueueFirst" 

Outputs:
ServiceLambdaFunctionQualifiedArn:
Value: "${self:provider.environment.FUNCTION_ARN}"

例如,请参见thisserverless variables for aws