

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

# Application Load Balancer のヘルスチェックログを有効にする
<a name="enable-health-check-logging"></a>

ロードバランサーのヘルスチェックログを有効にするときは、ロードバランサーがログを保存する S3 バケットの名前を指定する必要があります。このバケットは、バケットにアクセスログを書き込む許可を Elastic Load Balancing に付与するバケットポリシーが必要です。

**Topics**
+ [

## ステップ 1: S3 バケットを作成する
](#health-check-log-create-bucket)
+ [

## ステップ 2: S3 バケットにポリシーをアタッチする
](#attach-bucket-policy-health-check)
+ [

## ステップ 3: ヘルスチェックログを設定する
](#enable-health-check-logs)
+ [

## ステップ 4: バケット許可を確認
](#verify-bucket-permissions-health-check)
+ [

## トラブルシューティング
](#bucket-permissions-troubleshooting-health-check)

## ステップ 1: S3 バケットを作成する
<a name="health-check-log-create-bucket"></a>

ヘルスチェックログを有効にする場合は、ヘルスチェックログの S3 バケットを指定する必要があります。既存のバケットを使用するか、ヘルスチェックログ専用のバケットを作成できます。バケットは、次の要件を満たしている必要があります。

**要件**
+ バケットは、ロードバランサーと同じリージョンに配置されている必要があります。バケットとロードバランサーは、異なるアカウントにより所有できます。
+ サポートされている唯一のサーバー側の暗号化オプションは、Amazon S3 マネージドキー (SSE-S3) です。詳細については、 「 [Amazon S3 マネージド暗号化キー (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)」を参照してください。

**Amazon S3 コンソールを使用して S3 バケットを作成するには**

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. **[バケットを作成]** を選択します。

1. **[バケットを作成]** ページで、次の操作を実行します。

   1. **[バケット名]** にバケットの名前を入力します。この名前は、Amazon S3 内で既存の、すべてのバケット名の中で一意である必要があります。リージョンによっては、バケット名にその他の制限が設けられていることがあります。詳細については、*Amazon S3 ユーザーガイド*の「[バケットの制約と制限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)」を参照してください。

   1. **[AWS リージョン]** で、ロードバランサーを作成したリージョンを選択します。

   1. **[デフォルトの暗号化]** には、**[Amazon S3 マネージドキー (SSE-S3)]** を選択します。

   1. **[バケットを作成]** を選択します。

## ステップ 2: S3 バケットにポリシーをアタッチする
<a name="attach-bucket-policy-health-check"></a>

S3 バケットには、ヘルスチェックログをバケットに書き込むアクセス許可を Elastic Load Balancing に付与するバケットポリシーが必要です。バケットポリシーは、バケットのアクセス許可を定義するためにアクセスポリシー言語で記述された JSON ステートメントのコレクションです。各ステートメントには 1 つのアクセス許可に関する情報が含まれ、一連のエレメントが使用されます。

既にポリシーがアタッチされている既存のバケットを使用している場合は、Elastic Load Balancing ヘルスチェックログの ステートメントをポリシーに追加できます。その場合、生成されたアクセス許可のセットを評価して、ヘルスチェックログのバケットへのアクセスを必要とするユーザーに適していることを確認することをお勧めします。

### バケットポリシー
<a name="bucket-policy-logdelivery-health-check"></a>

このポリシーは、指定されたログ配信サービスに許可を付与します。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "logdelivery.elasticloadbalancing.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/123456789012/*"
    }
  ]
}
```

`Resource` に、ポリシー例に示す形式を使用して、アクセスログの場所の ARN を入力します。S3 バケット ARN のリソースパスには、ロードバランサーを持つアカウントのアカウント ID を必ず含めてください。これにより、指定されたアカウントのロードバランサーのみが S3 バケットにアクセスログを書き込むことができます。

指定する ARN は、[ステップ 3](enable-access-logging.md#enable-access-logs) でアクセスログを有効にするときにプレフィックスを含めるかどうかによって変わってきます。

**プレフィックスを含む S3 バケット ARN の例**  
S3 バケット名は amzn-s3-demo-logging-bucket で、プレフィックスは logging-prefix です。

```
arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
```

**AWS GovCloud (US)** – 次の例では、 AWS GovCloud (US) Regionsの ARN 構文を使用します。

```
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
```

**プレフィックスを持たない S3 バケット ARN の例**  
S3 バケット名は amzn-s3-demo-logging-bucket です。S3 バケット ARN にプレフィックス部分はありません。

```
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
```

**AWS GovCloud (US)** – 次の例では、 AWS GovCloud (US) Regionsの ARN 構文を使用します。

```
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
```

### レガシーバケットポリシー
<a name="legacy-bucket-policy"></a>

以前は、2022 年 8 月より前に利用可能であったリージョンでは、リージョンに固有の Elastic Load Balancing アカウントにアクセス許可を付与するポリシーが必要でした。このレガシーポリシーは引き続きサポートされていますが、上記の新しいポリシーに置き換えることをお勧めします。レガシーポリシー (ここには示されていません) を引き続き使用してもかまいません。

 参考までに、レガシーポリシーの `Principal` で指定する Elastic Load Balancing アカウントの ID を次に示します。このリストに含まれていないリージョンは、レガシーポリシーをサポートしていないことに注意してください。
+ 米国東部 (バージニア北部) – 127311923021
+ 米国東部 (オハイオ) — 033677994240
+ 米国西部 (北カリフォルニア) – 027434742980
+ 米国西部 (オレゴン) — 797873946194
+ アフリカ (ケープタウン) - 098369216593
+ アジアパシフィック (香港) - 754344448648
+ アジアパシフィック (ジャカルタ) – 589379963580
+ アジアパシフィック (ムンバイ) – 718504428378
+ アジアパシフィック (大阪) – 383597477331
+ アジアパシフィック (ソウル) – 600734575887
+ アジアパシフィック (シンガポール) – 114774131450
+ アジアパシフィック (シドニー) — 783225319266
+ アジアパシフィック (東京) — 582318560864
+ カナダ (中部) – 985666609251
+ 欧州 (フランクフルト) – 054676820928
+ 欧州 (アイルランド) – 156460612806
+ 欧州 (ロンドン) – 652711504416
+ ヨーロッパ (ミラノ) - 635631232127
+ 欧州 (パリ) – 009996457667
+ 欧州 (ストックホルム) – 897822967062
+ 中東 (バーレーン) — 076674570225
+ 南米 (サンパウロ) – 507241528517
+ AWS GovCloud (米国東部) – 190560391635
+ AWS GovCloud (米国西部) – 048591011584

### Outposts ゾーン
<a name="bucket-policy-outposts"></a>

次のポリシーを使用して、指定されたログ配信サービスに許可を付与します。Outposts ゾーンのロードバランサーにはこのポリシーを使用します。

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": "logdelivery.elb.amazonaws.com"
    },
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/123456789012/*"
    "Condition": {
        "StringEquals": {
            "s3:x-amz-acl": "bucket-owner-full-control"
        }
    }
}
```

`Resource` には、アクセスログの場所の ARN を入力します。S3 バケット ARN のリソースパスには、ロードバランサーを持つアカウントのアカウント ID を必ず含めてください。これにより、指定されたアカウントのロードバランサーのみが S3 バケットにアクセスログを書き込むことができます。

指定する ARN は、[ステップ 3](enable-access-logging.md#enable-access-logs) でアクセスログを有効にするときにプレフィックスを含めるかどうかによって変わってきます。

**プレフィックスを含む S3 バケット ARN の例**  
S3 バケット名は amzn-s3-demo-logging-bucket で、プレフィックスは logging-prefix です。

```
arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
```

**プレフィックスを持たない S3 バケット ARN の例**  
S3 バケット名は amzn-s3-demo-logging-bucket です。S3 バケット ARN にプレフィックス部分はありません。

```
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
```

### セキュリティのベストプラクティス
<a name="bucket-policy-security-best-practices"></a>

セキュリティを強化するには、正確な S3 バケット ARN を使用します。
+ S3 バケット ARN だけでなく、完全なリソースパスを使用します。
+ S3 バケット ARN のアカウント ID 部分を含めます。
+ S3 バケット ARN のアカウント ID 部分にワイルドカード (\$1) を使用しないでください。

バケットポリシーを作成したら、Amazon S3 コンソールや AWS CLI コマンドなどの Amazon S3 インターフェイスを使用して、バケットポリシーを S3 バケットにアタッチします。

------
#### [ Console ]

**バケットポリシーを S3 バケットにアタッチするには**

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. バケットの名前を選択して、その詳細ページを開きます。

1. **[許可]** を選択してから、**[バケットポリシー]**、**[編集]** の順に選択します。

1. 必要な許可を付与するようにバケットポリシーを更新します。

1. **[Save changes]** (変更の保存) をクリックします。

------
#### [ AWS CLI ]

**バケットポリシーを S3 バケットにアタッチするには**  
[put-bucket-policy](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-policy.html) コマンドを使用します。この例では、バケットポリシーは指定された .json ファイルに保存されます。

```
aws s3api put-bucket-policy \
    --bucket amzn-s3-demo-bucket \
    --policy file://access-log-policy.json
```

------

## ステップ 3: ヘルスチェックログを設定する
<a name="enable-health-check-logs"></a>

次の手順を使用して、ログファイルをキャプチャして S3 バケットに配信するようにヘルスチェックログを設定します。

**要件**  
バケットは[ステップ 1](#health-check-log-create-bucket) で説明した要件を満たしている必要があり、[ステップ 2](#attach-bucket-policy-health-check) で説明したようにバケットポリシーをアタッチする必要があります。プレフィックスを指定する場合、「AWSLogs」を含めることはできません。

**ヘルスチェックログの S3 バケットを管理するには**  
ヘルスチェックログ用に設定したバケットを削除する前に、ヘルスチェックログを必ず無効にしてください。そうしないと、同じ名前と必要なバケットポリシーを持つ新しいバケットがあり、所有していない AWS アカウント に作成されている場合、Elastic Load Balancing はロードバランサーのヘルスチェックログをこの新しいバケットに書き込む可能性があります。

------
#### [ Console ]

**ヘルスチェックログを有効にするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**ロードバランサー**] を選択します。

1. ロードバランサーの名前を選択して、その詳細ページを開きます。

1. **[属性]** タブで、**[編集]** を選択します。

1. **モニタリング**では、**ヘルスチェックログ**をオンにします。

1. **[S3 ロケーション]** には、ログファイルの S3 URI を入力します。指定する URI は、プレフィックスを使用しているかどうかによって異なります。
   + プレフィックスが付いた URI: `s3://bucket-name/prefix`
   + プレフィックスなしの URI: `s3://bucket-name`

1. **[Save changes]** (変更の保存) をクリックします。

------
#### [ AWS CLI ]

**ヘルスチェックログを有効にするには**  
関連する属性で [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) コマンドを使用します。

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes \
        Key=health_check_logs.s3.enabled,Value=true \
        Key=health_check_logs.s3.bucket,Value=amzn-s3-demo-logging-bucket \
        Key=health_check_logs.s3.prefix,Value=logging-prefix
```

------
#### [ CloudFormation ]

**ヘルスチェックログを有効にするには**  
[AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html) リソースを更新して、関連する属性を含めます。

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "health_check_logs.s3.enabled"
          Value: "true"
        - Key: "health_check_logs.s3.bucket"
          Value: "amzn-s3-demo-logging-bucket"
        - Key: "health_check_logs.s3.prefix"
          Value: "logging-prefix"
```

------

## ステップ 4: バケット許可を確認
<a name="verify-bucket-permissions-health-check"></a>

ロードバランサーのヘルスチェックログを有効にすると、Elastic Load Balancing は S3 バケットを検証し、テストファイルを作成して、バケットポリシーで必要なアクセス許可が指定されていることを確認します。Amazon S3 コンソールを使用して、テストファイルが作成されたことを確認できます。テストファイルは実際のヘルスチェックログファイルではなく、レコードの例は含まれていません。

**Elastic Load Balancing が S3 バケットにテストファイルを作成したことを確認するには**

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. ヘルスチェックログに指定したバケットの名前を選択します。

1. テストファイル「`ELBHealthCheckLogTestFile`」に移動します。場所は、プレフィックスを使用しているかどうかによって異なります。
   + プレフィックスが付いた場所: *amzn-s3-demo-logging-bucket*/*prefix*/AWSLogs/*123456789012*/ELBHealthCheckLogTestFile
   + プレフィックスのない場所: *amzn-s3-demo-logging-bucket*/AWSLogs/*123456789012*/ELBHealthCheckLogTestFile

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

アクセス拒否エラーが表示される場合は、以下の原因が考えられます。
+ バケットポリシーは、バケットにヘルスチェックログを書き込むアクセス許可を Elastic Load Balancing に付与しません。そのリージョンに対して正しいバケットポリシーを使用していることを確認してください。リソース ARN が、ヘルスチェックログを有効にしたときに指定したのと同じバケット名を使用していることを確認します。ヘルスチェックログを有効にしたときにプレフィックスを指定しなかった場合は、リソース ARN にプレフィックスが含まれていないことを確認します。
+ バケットが、サポートされていないサーバー側の暗号化オプションを使用している。バケットは、Amazon S3 マネージドキー (SSE-S3) を使用する必要があります。