Serverless Frameworkで作ったAPI Gatewayにタグをつける
Qiitaを漁っていたところ、「API Gatewayにはタグがつかない」という記事を見かけました。 「へー」と思ってCloudFormationのドキュメントを見に行ったところ、確かにTagを設定する項目がない様子でし […]
広告ここから
広告ここまで
目次
Qiitaを漁っていたところ、「API Gatewayにはタグがつかない」という記事を見かけました。
「へー」と思ってCloudFormationのドキュメントを見に行ったところ、確かにTagを設定する項目がない様子でした。
{
"Type" : "AWS::ApiGateway::RestApi",
"Properties" : {
"ApiKeySourceType" : String,
"BinaryMediaTypes" : [ String, ... ],
"Body" : Json,
"BodyS3Location" : S3Location,
"CloneFrom" : String,
"Description" : String,
"EndpointConfiguration" : EndpointConfiguration,
"FailOnWarnings" : Boolean,
"MinimumCompressionSize" : Integer,
"Name" : String,
"Parameters" : {Key : Value, ...},
"Policy" : Json
}
}
serverless-tag-api-gatewayプラグインを使う
元記事に対策も書いてありまして、「serverless-tag-api-gateway」というプラグインを入れれば良い様子です。
あまり重厚なプラグインだと保守しんどいかなと思ってコードを一応みたのですが、「CloudFormationのデプロイ完了後にAWS SDKでタグをつけて回る」というシンプルなものでしたので、最悪メンテが止まってもなんとかなるかなという印象です。
$ yarn add -D serverless-tag-api-gateway
$ vim serverless.yml
service: example
custom:
apiGatewayTags:
Service: Example Services
Stage: development
provider:
name aws
runtime: nodejs12.x
tags: ${self:custom.apiGatewayTags}
plugins:
- serverless-tag-api-gateway
functions:
index:
handler: index.handler
events:
- http:
cors: true
path: '/'
method: any
API GatewayとLambdaどちらにも同じタグをつける前提であれば、上のサンプルのようにtagsの方にもcustomの値を割り当ててやることで二重管理も防げます。