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の値を割り当ててやることで二重管理も防げます。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark