uri,用于aws_api_gateway_integration,用于将AWS类型(集成)集成到DynamoDb

Pat*_*Pat 6 amazon-web-services amazon-dynamodb aws-sdk terraform

我正在使用Terraform通过连接到DynamoDb API的API网关创建基础结构。我正在创建resource aws_api_gateway_integration定义与DynamoDb的集成,type属性设置为AWS

但是以某种方式我无法获得uri正确的分贝值。

文档说它应该是格式arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}

当前配置为arn:aws:apigateway:us-east-1:dynamodb:GetItem

我不确定是什么service_api。有人遇到过吗?请帮助。

Til*_*uhn 8

这也花了我一些时间来弄清楚,我认为DynamoDB API-网关集成在Terraform文档中应该有一个类似于Lambda的专用示例。实际上service_api,仅指代DynamoDB操作(您也将在AWS Api Gateway Console Action字段中输入该操作),其前缀为literal action/。因此,以下块最终适用于我的PUT请求映射:

resource "aws_api_gateway_integration" "my-integration" {
  type = "AWS"
  integration_http_method = "POST"
  uri = "arn:aws:apigateway:eu-central-1:dynamodb:action/PutItem"
  # (...)
}
Run Code Online (Sandbox Code Playgroud)

  • 网关需要与 dynamodb 表交互的权限,因此通常您会创建一个 IAM 角色并关联一个授予必要操作(例如“dynamodb:PutItem”)的策略。如果您的角色由 terraform 管理,您只需使用资源本身来解析 _ARN_,并将其分配为 _aws_api_gateway_integration_ 设置中的凭证,例如 `credentials = "${aws_iam_role.api-gateway.arn}"`。[这里](https://github.com/tillkuhn/yummy-aws/blob/master/terraform/terraform-apigw.tf)我在项目中使用的完整示例,希望这会有所帮助。 (2认同)