

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS CDK を使用した AWS DevOps エージェントの開始方法
<a name="getting-started-with-aws-devops-agent-getting-started-with-aws-devops-agent-using-aws-cdk"></a>

## 概要:
<a name="overview"></a>

このガイドでは、 AWS クラウド開発キット (AWS CDK) を使用して AWS DevOps エージェントリソースを作成およびデプロイする方法を示します。 AWS CDK アプリケーションは、 AWS CloudFormation を通じてエージェントスペース、 AWS Identity and Access Management (IAM) ロール、オペレーターアプリ、および AWS アカウントの関連付けの作成を自動化します。

 AWS CDK アプローチは、必要なすべてのリソースをコードとしてのインフラストラクチャとして定義することで、 [CLI オンボーディングガイド](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html)で説明されている手動ステップを自動化します。

AWS DevOps エージェントは、米国東部 (バージニア北部）、米国西部 (オレゴン）、アジアパシフィック (シドニー）、アジアパシフィック (東京）、欧州 (フランクフルト）、欧州 (アイルランド) の 6 つの AWS リージョンで利用できます。サポートされているリージョンの詳細については、「」を参照してください[サポートされるリージョン](about-aws-devops-agent-supported-regions.md)。

## 前提条件
<a name="prerequisites"></a>

作業を開始する前に、以下の準備が整っていることを確認します。
+ AWS コマンドラインインターフェイス (AWS CLI) がインストールされ、適切な認証情報で設定されている
+ Node.js バージョン 18 以降
+ AWS CDK コマンドラインインターフェイス (CLI) がグローバルにインストールされています。 AWS CDK CLI をインストールするには、次のコマンドを実行します。

```
npm install -g aws-cdk
```
+ モニタリング (プライマリ) AWS アカウントの 1 つのアカウント
+ (オプション) クロス AWS アカウントモニタリングを設定する場合は 2 番目のアカウント

## このガイドの内容
<a name="what-this-guide-covers"></a>

このガイドは 2 つのパートに分かれています。
+ **パート 1** — オペレーターアプリと AWS 関連付けを使用してエージェントスペースをモニタリングアカウントにデプロイします。このパートを完了すると、エージェントはそのアカウントの問題をモニタリングできます。
+ **パート 2 (オプション)** — サービスアカウントのソース AWS 関連付けを追加し、クロスアカウント IAM ロールをそのアカウントにデプロイします。この設定により、エージェントスペースはアカウント全体のリソースをモニタリングできます。

## 作成されるリソース
<a name="resources-created"></a>

### パート 1: DevOpsAgentStack (モニタリングアカウント)
<a name="part-1-devopsagentstack-monitoring-account"></a>
+ **IAM ロール** (`DevOpsAgentRole-AgentSpace`) — アカウントをモニタリングするために DevOps エージェントサービスによって引き受けられます。Resource Explorer サービスにリンクされたロールの作成を許可する `AIDevOpsAgentAccessPolicy`管理ポリシーとインラインポリシーが含まれます。
+ **IAM ロール** (`DevOpsAgentRole-WebappAdmin`) — エージェントオペレーションの `AIDevOpsOperatorAppAccessPolicy`管理ポリシーを持つオペレーターアプリロール。
+ **エージェントスペース** (`MyCDKAgentSpace`) — `AWS::DevOpsAgent::AgentSpace` CloudFormation リソースを使用して作成された中央エージェントスペース。オペレーターアプリの設定が含まれます。
+ **関連付け** (AWS モニター) — `AWS::DevOpsAgent::Association` CloudFormation リソースを使用して、モニタリングアカウントをエージェントスペースにリンクします。
+ **関連付け** (AWS ソース) — (オプション) サービスアカウントをエージェントスペースにリンクして、クロスアカウントモニタリングを行います。

### パート 2: ServiceStack (サービスアカウント、オプション)
<a name="part-2-servicestack-service-account-optional"></a>
+ **IAM ロール** (`DevOpsAgentRole-SecondaryAccount`) — 固定名を持つクロスアカウントロール。モニタリングアカウントのエージェントスペースによって信頼されます。Resource Explorer サービスにリンクされたロールの作成を許可する `AIDevOpsAgentAccessPolicy`管理ポリシーとインラインポリシーが含まれます。
+ **Lambda 関数** (`echo-service`) — 入力イベントをエコーバックするシンプルなサービス例。

## セットアップ
<a name="setup"></a>

### ステップ 1: サンプルリポジトリのクローンを作成する
<a name="step-1-clone-the-sample-repository"></a>

次のコマンドを実行してリポジトリのクローンを作成し、プロジェクトディレクトリに変更します。

```
git clone https://github.com/aws-samples/sample-aws-devops-agent-cdk.git
cd sample-aws-devops-agent-cdk
```

### ステップ 2: 依存関係をインストールする
<a name="step-2-install-dependencies"></a>

次のコマンドを実行して、プロジェクトの依存関係をインストールします。

```
npm install
```

## パート 1: エージェントスペースをデプロイする
<a name="part-1-deploy-the-agent-space"></a>

このセクションでは、エージェントスペース、IAM ロール、オペレーターアプリ、および AWS 関連付けをモニタリングアカウントに作成します。

### ステップ 1: モニタリングアカウント ID を設定する
<a name="step-1-configure-the-monitoring-account-id"></a>

を開き`lib/constants.ts`、モニタリングアカウント ID を設定します。

次の例は、更新する定数を示しています。

```
export const MONITORING_ACCOUNT_ID = "<YOUR_MONITORING_ACCOUNT_ID>";
```

### ステップ 2: AWS CDK 環境をブートストラップする
<a name="step-2-bootstrap-the-aws-cdk-environment"></a>

モニタリングアカウントで AWS CDK をブートストラップしていない場合は、次のコマンドを実行します。

```
cdk bootstrap aws://<MONITORING_ACCOUNT_ID>/<REGION> --profile monitoring
```

### ステップ 3: ビルドとデプロイ
<a name="step-3-build-and-deploy"></a>

次のコマンドを実行して TypeScript コードを構築し、スタックをデプロイします。

```
npm run build
cdk deploy DevOpsAgentStack --profile monitoring
```

### ステップ 4: スタック出力を記録する
<a name="step-4-record-the-stack-outputs"></a>

デプロイが完了すると、 AWS CDK はスタック出力を出力します。これらの値は後で使用するために記録します。

次の例は、予想される出力を示しています。

```
Outputs:
DevOpsAgentStack.AgentSpaceArn = arn:aws:aidevops:<REGION>:123456789012:agentspace/abc123
DevOpsAgentStack.AgentSpaceRoleArn = arn:aws:iam::123456789012:role/DevOpsAgentRole-AgentSpace
DevOpsAgentStack.OperatorRoleArn = arn:aws:iam::123456789012:role/DevOpsAgentRole-WebappAdmin
DevOpsAgentStack.AssociationId = assoc-xyz
```

パート 2 を完了する予定がある場合は、`AgentSpaceArn`値を保存します。サービスアカウントスタックを設定するには、これが必要です。

### ステップ 5: デプロイを検証する
<a name="step-5-verify-the-deployment"></a>

エージェントスペースが正常に作成されたことを確認するには、次の AWS CLI コマンドを実行します。

```
aws devopsagent get-agent-space \
  --agent-space-id <AGENT_SPACE_ID> \
  --region <REGION>
```

この時点で、エージェントスペースはオペレーターアプリが有効で、モニタリングアカウントが関連付けられている状態でデプロイされます。エージェントはこのアカウントの問題をモニタリングできます。

## パート 2 (オプション): クロスアカウントモニタリングを追加する
<a name="part-2-optional-add-cross-account-monitoring"></a>

このセクションでは、エージェントスペースが 2 番目の AWS アカウント (サービスアカウント) のリソースをモニタリングできるようにセットアップを拡張します。これには、次の 2 つのアクションが含まれます。

1. サービスアカウントを指すソース AWS 関連付けを DevOpsAgentStack に追加します。

1. エージェントスペースを信頼する IAM ロールを使用して ServiceStack をサービスアカウントにデプロイします。

**重要**  
** 続行する前にパート 1 を完了する必要があります。ServiceStack には、DevOpsAgentStack デプロイ出力`AgentSpaceArn`から が必要です。

### ステップ 1: サービスアカウント ID を設定する
<a name="step-1-configure-the-service-account-id"></a>

を開き`lib/constants.ts`、サービスアカウント ID を設定します。

次の例は、更新する定数を示しています。

```
export const SERVICE_ACCOUNT_ID = "<YOUR_SERVICE_ACCOUNT_ID>";
```

DevOpsAgentStack は、このアカウント ID を使用してソース AWS の関連付けを作成します。この値を設定する前に DevOpsAgentStack をデプロイした場合は、再デプロイして関連付けを作成します。

次のコマンドを実行して再デプロイします。

```
npm run build
cdk deploy DevOpsAgentStack --profile monitoring
```

### ステップ 2: エージェントスペース ARN を設定する
<a name="step-2-set-the-agent-space-arn"></a>

DevOpsAgentStack 出力 (パート 1、ステップ 4) から`AgentSpaceArn`値をコピーし、 で設定します`lib/constants.ts`。

次の例は、更新する定数を示しています。

```
export const AGENT_SPACE_ARN = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/<SPACE_ID>";
```

ServiceStack はこの値を使用して、セカンダリアカウントロールの信頼ポリシーの範囲を設定します。ServiceStack は、この値が設定されている場合にのみ合成されます。

### ステップ 3: サービスアカウントをブートストラップする
<a name="step-3-bootstrap-the-service-account"></a>

サービスアカウントで AWS CDK をブートストラップしていない場合は、次のコマンドを実行します。

```
cdk bootstrap aws://<SERVICE_ACCOUNT_ID>/<REGION> --profile service
```

### ステップ 4: ServiceStack をデプロイする
<a name="step-4-deploy-the-servicestack"></a>

次のコマンドを実行して、サービスアカウントの認証情報を使用して ServiceStack を構築およびデプロイします。

```
npm run build
cdk deploy ServiceStack --profile service
```

これにより、サービスアカウントに次のリソースが作成されます。
+ モニタリングアカウントのエージェントスペースを信頼する IAM ロール (`DevOpsAgentRole-SecondaryAccount`)
+ サンプルサービスとしてのエコー Lambda 関数 (`echo-service`)

### ステップ 5: デプロイを検証する
<a name="step-5-verify-the-deployment"></a>

Lambda 関数が正常にデプロイされたことを確認するには、次のコマンドを実行してエコーサービスをテストします。

```
aws lambda invoke \
  --function-name echo-service \
  --payload '{"test": "hello world"}' \
  --profile service \
  response.json
cat response.json
```

## トラブルシューティング
<a name="troubleshooting"></a>

このセクションでは、一般的な問題とその解決方法について説明します。

**CloudFormation リソースタイプが見つかりません**
+ にデプロイしていることを確認します[サポートされるリージョン](about-aws-devops-agent-supported-regions.md)。
+ CLI AWS に適切なアクセス許可が設定されていることを確認します。

**IAM ロールの作成に失敗しました**
+ デプロイロールに IAM ロールを作成するアクセス許可があることを確認します。
+ 信頼ポリシーの条件がアカウント ID と一致していることを確認します。

**クロスアカウントデプロイが「ターゲットアカウントでロールを引き受けることができませんでした」で失敗する**
+ 各スタックは、ターゲットアカウントの認証情報を使用してデプロイする必要があります。`--profile` フラグを使用して、正しい CLI AWS プロファイルを指定します。
+  AWS CDK がターゲットアカウントでブートストラップされていることを確認します。

**IAM 伝達の遅延**
+ IAM ロールの変更が反映されるまでに数分かかる場合があります。ロールの作成直後にエージェントスペースの作成が失敗した場合、数分待ってから再デプロイします。

## クリーンアップ
<a name="cleanup"></a>

すべてのリソースを削除するには、スタックを逆の順序で破棄します。

次のコマンドを実行して、スタックを破棄します。

```
# If you deployed the ServiceStack, destroy it first
cdk destroy ServiceStack --profile service
# Then destroy the DevOpsAgentStack
cdk destroy DevOpsAgentStack --profile monitoring
```

**警告:** このアクションは、エージェントスペースと関連するすべてのデータを完全に削除します。このアクションは元に戻すことができません。続行する前に、重要な情報がバックアップされていることを確認してください。

## セキュリティに関する考慮事項
<a name="security-considerations"></a>
+  AWS CDK アプリケーションは、`aidevops.amazonaws.com`サービスプリンシパルのみが引き受けることを許可する信頼ポリシーを持つ IAM ロールを作成します。
+ 信頼ポリシーには、特定の AWS アカウントとエージェントスペースの ARN へのアクセスを制限する条件が含まれます。
+ すべてのポリシーは最小特権の原則に従います。組織のセキュリティ要件に基づいて IAM ポリシーを確認してカスタマイズします。
+ クロスアカウントロール (`DevOpsAgentRole-SecondaryAccount`) は固定名を使用し、特定のエージェントスペース ARN に限定されます。

## 次の手順
<a name="next-steps"></a>

 AWS CDK を使用して AWS DevOps エージェントをデプロイした後:

1. DevOps エージェント機能の全範囲については、「DevOps [AWS DevOps エージェントユーザーガイド](https://docs.aws.amazon.com/devopsagent/latest/userguide/)」を参照してください。

1. 自動インフラストラクチャ管理のために AWS 、CDK デプロイを CI/CD パイプラインに統合することを検討してください。

## その他のリソース
<a name="additional-resources"></a>
+ [AWS DevOps エージェントユーザーガイド](https://docs.aws.amazon.com/devopsagent/latest/userguide/)
+ GitHub ウェブサイトのサンプル [CDK リポジトリ](https://github.com/aws-samples/sample-aws-devops-agent-cdk) 
+ [CLI オンボーディングガイド](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html)