LoginSignup
6
0

More than 1 year has passed since last update.

PulumiでawslogsdeliveryアカウントのIDを取得する関数が使えるようになった

Last updated at Posted at 2021-12-23

はじめに

数ヶ月前に、awslogsdeliveryのアカウントIDを取得する関数のgetLogDeliveryCanonicalUserIdが使えるようになりました。これで、CloudFrontのログをS3に出力する権限の設定が読みやすくなります!

使い方

使い方はかんたんです。
上記のサイトからまるまる引用してきます。

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

+const exampleLogDeliveryCanonicalUserId = aws.cloudfront.getLogDeliveryCanonicalUserId({});
const exampleBucket = new aws.s3.Bucket("exampleBucket", {grants: [{
+    id: exampleLogDeliveryCanonicalUserId.then(exampleLogDeliveryCanonicalUserId => exampleLogDeliveryCanonicalUserId.id),
    type: "CanonicalUser",
    permissions: ["FULL_CONTROL"],
}]});

今までは、以下のようにIDをベタで書いていた方が多いと思います。

const awslogsdeliveryAccountId =
  "c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0";
const exampleBucket = new aws.s3.Bucket("exampleBucket", {
  grants: [
    {
      id: awslogsdeliveryAccountId,
      type: "CanonicalUser",
      permissions: ["FULL_CONTROL"],
    },
  ],
});

このコードを後から見た時に、この文字列が何なのかが分からなくなるなという方が多かったのではないかと思います。

awslogsdelivery とは?

CloudFrontからS3にログ出力をするときに使われるアカウントです。

ログの出力先のS3に対して、awslogsdeliveryアカウントにFULL_CONTROL権限を付与することで、バケットへの書き込みができるようになります。先程出てきたc4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0という文字列は、このアカウントのcanonical IDになります。

Terraformでももちろん使える

Terraformではaws_cloudfront_log_delivery_canonical_user_idのData Sourceにありましたので、Terraformをお使いの方も利用できます。

最後に

getLogDeliveryCanonicalUserId は地味ながら個人的には嬉しい機能だと思います!

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0