gpt4 book ai didi

amazon-web-services - 如何获取 AWS::ApiGateway::Method 的 arn

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

这里我想获取AWS::Lambda::Permission“SourceArn”属性中的AWS::ApiGateway::Method的arn

这里是我如何获取 arn

当我在 SourceArn 中使用 Fn::GetAtt 获取 lambdaAPOSTMethod 或 lambdaBPOSTMethod arn 时,它显示错误,指出 Fn::GetAtt 不适用于 AWS::ApiGateway::Method 部分

我看到我们可以做类似 SourceArn: !Join [ ":", ["arn:aws:execute-api", !Ref AWS::Region, !Ref AWS::AccountId, !Ref ApiGatewayRestApi, "/*/POST/"]]

但我想要一些简单的解决方案,例如 ref apigatewmethod

{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": { "Environment": { "Type": "String" } },
"Resources":
{
"APIGatewayRestAPI":
{
"Type": "AWS::ApiGateway::RestApi",
"Properties": { "Name": { "Fn::Sub": "avllano-${Environment}" } },
},
"lambdaBResource":
{
"Type": "AWS::ApiGateway::Resource",
"Properties":
{
"RestApiId": { "Ref": "APIGatewayRestAPI" },
"ParentId":
{ "Fn::GetAtt": ["APIGatewayRestAPI", "RootResourceId"] },
"PathPart": { "Fn::Sub": "lambdaB-${Environment}" },
},
"DependsOn": ["APIGatewayRestAPI"],
},
"lambdaBPOSTMethod":
{
"Type": "AWS::ApiGateway::Method",
"Properties":
{
"RestApiId": { "Ref": "APIGatewayRestAPI" },
"ResourceId": { "Ref": "lambdaBResource" },
"HttpMethod": "POST",
"AuthorizationType": "AWS_IAM",
"MethodResponses": [{ "StatusCode": 200 }],
"Integration":
{
"Type": "AWS_PROXY",
"IntegrationResponses": [{ "StatusCode": 200 }],
"IntegrationHttpMethod": "POST",
"Uri":
{
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:lambdaB-${Environment}/invocations",
},
},
},
"DependsOn": ["lambdaBResource"],
},
"APIGatewayDeployment":
{
"Type": "AWS::ApiGateway::Deployment",
"Properties":
{
"RestApiId": { "Ref": "APIGatewayRestAPI" },
"StageName": { "Ref": "Environment" },
},
"DependsOn": ["lambdaAPOSTMethod", "lambdaBPOSTMethod"],
},

"lambdaAPermission":
{
"Type": "AWS::Lambda::Permission",
"Properties":
{
"Action": "lambda:InvokeFunction",
"FunctionName":
{
"Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:lambdaA-${Environment}",
},
"Principal": "apigateway.amazonaws.com",
"SourceArn" : ?
},
"DependsOn": ["APIGatewayDeployment"],
},
"lambdaBPermission":
{
"Type": "AWS::Lambda::Permission",
"Properties":
{
"Action": "lambda:InvokeFunction",
"FunctionName":
{
"Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:lambdaB-${Environment}",
},
"Principal": "apigateway.amazonaws.com",
"SourceArn" : ?
},
"DependsOn": ["APIGatewayDeployment"],
},

},

}

最佳答案

对于 CloudFormation 资源类型,Refs 和 GetAtts 的实现不一致。您可以在每个文档页面底部的示例之前找到它们。 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html

在这种情况下,您将必须使用 Join 或 Sub 来构造 Arn。

关于amazon-web-services - 如何获取 AWS::ApiGateway::Method 的 arn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74745855/

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