AWS Marketplace で EC2 Image Builder で利用できるコンポーネントが提供されるようになりました #AWSreInvent
AWS Marketplace で EC2 Image Builder で利用できるコンポーネントが提供されるようになりました!
What's new
公式ドキュメント
何が嬉しい?
これまで、ISV が作成したコンポーネントを Image Builder で AMI に組み込むには、カスタムコンポーネントを作成する必要がありました。
例えば、Datadog であれば、下記記事を参考にカスタムコンポーネントをセットアップする必要がありました。
今回、ISV が提供する Image Builder で利用できるコンポーネントを Marketplace 経由で利用できるようになりました。
Datadog Agent や Trend Micro Vision One Agent などの ISV のエージェントを組み込んだ AMI を作りたい場合、こちらを利用することで作成工数/管理工数を削減することができます!
やってみる
今回は Datadog Agent を組み込んだ AMI を Image Builder で作ってみます。
まずはサブスクリプションからやっていきます。
利用したいコンポーネントを選択して、サブスクリプションを進めていきます。
Marketplace でサブスクリプションしますが、追加料金はかかりません。
Datadog であればログやメトリクスの量に応じた課金体系があるので、ここは無料で使わせてくれるということでしょう。
サブスクリプション完了後、コンソールからサブスクリプションしたコンポーネントを確認可能です(別の機会に Microsoft Office 入り AMI はサブスクライブしましたが、ここで表示される理由は不明なので無視しておきます)。
サブスクリプションできたので、さっそくパイプラインを作成していきます。
基本的にデフォルト設定で作成します。
東京リージョンでやった所「AWS Marketplace」が出てこなかったので、us-east-1 で作成しています。リージョンに依る制限は特に無さそうなので、私の環境の問題か、時間が立てば解決すると思っています。
Datadog Agent を選択します。
Datadog 側の情報を入れる必要があります。
DD_SITE は利用する Datadog のサイトを入力します(今回は app.datadoghq.com を指定しました)。
SM_SECRET_NAME は Datadog の API キーを格納する Secret Manager のシークレット名を、SM_API_KEY は同じくシークレットのキーを入力します。
基本的にデフォルト設定で良いのですが、インフラストラクチャ設定で指定する IAM ロールだけ注意が必要です。
imagebuilder:GetMarketplaceResource の権限と、作成したシークレットへの GetSecretValue への権限を付与する必要がありました。
付与しない状態でパイプラインを実行したら、下記エラーが発生しました。
Image ARN: arn:aws:imagebuilder:us-east-1:xxxxxxxxxxxx:image/dd-agent-ami/1.0.0/1 failed with error: Workflow Execution ID: 'wf-f9cc1b78-95bf-408b-9ceb-12394e20daaa' failed with reason: generated.ForbiddenException: User: arn:aws:sts::xxxxxxxxxxxx:assumed-role/ec2-ssm-role/i-02c686a67ebafb525 is not authorized to perform: imagebuilder:GetMarketplaceResource on resource: arn:aws:imagebuilder:us-east-1:aws-marketplace:component/datadog-agent-for-linux-prod-wwo2b4p7dgrkk/0.1.0/1.
An error occurred (AccessDeniedException) when calling the GetSecretValue operation: User: arn:aws:sts::xxxxxxxxxxxx:assumed-role/ec2-ssm-role/i-0827614d762acfee8 is not authorized to perform: secretsmanager:GetSecretValue on resource: mp-ib-datadog-agent-secret because no identity-based policy allows the secretsmanager:GetSecretValue action
AMI から EC2 を作成してから Session Manager 経由で接続し、Datadog エージェントがインストールされていることを確認できました!
sh-5.2$ systemctl status datadog-agent
● datadog-agent.service - Datadog Agent
Loaded: loaded (/usr/lib/systemd/system/datadog-agent.service; enabled; preset: disabled)
Active: active (running) since Tue 2024-12-03 06:36:18 UTC; 2min 4s ago
Main PID: 1991 (agent)
Tasks: 8 (limit: 1111)
Memory: 229.6M
CPU: 2.334s
CGroup: /system.slice/datadog-agent.service
└─1991 /opt/datadog-agent/bin/agent/agent run -p /opt/datadog-agent/run/agent.pid
まとめ
ISV 製品のエージェントセットアップが楽かつオフィシャルな方法でできるのは嬉しいです。
今後の対象サービスは増えると思うので、注視したいと思います!