

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

# AWS Transfer Family AS2 の
<a name="as2-for-transfer-family"></a>

適用性ステートメント 2 (AS2) は RFC が定義したファイル転送仕様で、強力なメッセージ保護と検証メカニズムが含まれています。転送中の AS2 ペイロードを保護するには、暗号化とデジタル署名を使用した暗号化メッセージ構文 (CMS) を使用して、データ保護とピア認証を提供します。署名付きメッセージ処理通知 (MDN) レスポンスペイロードは、メッセージが受信され、正常に復号されたことを確認 (否認防止) します。

AS2 プロトコルは、プロトコルに組み込まれたデータ保護とセキュリティ機能に依存するコンプライアンス要件を持つワークフローに不可欠です。 AWS Transfer Family AS2 エンドポイントは [Drummond 認定を受け](https://aws.amazon.com/about-aws/whats-new/2023/06/aws-transfer-family-drummond-group-as2-certification/)ており、小売、ライフサイエンス、製造、金融サービス、ユーティリティなどの業界のお客様は、ビジネスパートナーと安全に取引できます。

Transfer Family で AS2 を使用する場合、トランザクションされたデータは、次の目的で で AWS ネイティブにアクセスできます。
+ 処理、分析、機械学習
+ エンタープライズリソースプランニング (ERP) システムとの統合
+ カスタマーリレーションシップ管理 (CRM) システムとの統合

AS2-enabledサーバーを持つパートナーとファイルを交換するには、以下を実行する必要があります。
+ 暗号化用のパブリック/プライベートキーペアを生成する
+ 署名用のパブリック/プライベートキーペアを生成する
+ パブリックキーをパートナーと交換する

**重要**  
HTTPS AS2 サーバーのエンドポイントは現在サポートされていません。TLS の終了はお客様の責任となります。

Transfer Family には、AS2 が有効になっている Transfer Family エンドポイントと Transfer Family AS2 コネクタを設定できるワークショップが用意されています。このワークショップの詳細については、「[こちら](https://catalog.workshops.aws/transfer-family-as2/en-US)」をご覧ください。

Transfer Family で AS2 を設定するstep-by-stepについては、以下を参照してください。

1. [AS2 証明書のインポート](managing-as2-partners.md#configure-as2-certificate)

1. [AS2 プロファイルの作成](configure-as2-profile.md)

1. [AS2 サーバーを作成する](create-as2-transfer-server.md)

1. [AS2 契約を作成する](create-as2-transfer-server.md#as2-agreements)

1. [AS2 コネクタを設定する](configure-as2-connector.md)

完全な例については、「」を参照してください[AS2 設定のセットアップ](as2-example-tutorial.md)。

**注記**  
AS2 Terraform テンプレートのサポートを表示するには、[Transfer Family Terraform テンプレート機能リクエスト](https://github.com/aws-ia/terraform-aws-transfer-family/issues/62#issue-3364703944)にサムアップリアクション (👍) を追加します。ユースケースを説明するコメントを追加することもできます。

## AS2 ユースケース
<a name="as2-use-cases"></a>

AS2-enabledサーバーを持つパートナーとファイル AWS Transfer Family を交換する場合は、セットアップの最も複雑な部分として、暗号化用に 1 つのパブリック/プライベートキーペアを生成し、パートナーとパブリックキーに署名して交換します。

![\[公開鍵と秘密鍵のペアを暗号化と署名に使用する方法を示す図。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-architecture-high-level.png)


AS2 AWS Transfer Family で を使用する場合は、次のバリエーションを考慮してください。

**注記**  
*取引先*は、そのパートナープロファイルに関連付けられたパートナーです。  
以下の表の MDN に関する記述はすべて、署名付き MDN を前提としています。


**AS2 ユースケース**  

|  | 
| --- |
|  インバウンドのみのユースケース [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-for-transfer-family.html)  | 
|  アウトバウンドのみのユースケース [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-for-transfer-family.html)  | 
|  インバウンドとアウトバウンドのユースケース [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-for-transfer-family.html)  | 

## AS2 CloudFormation テンプレート
<a name="as2-templates-section"></a>

このトピックでは、AS2 サーバーと設定をすばやくデプロイするために使用できる AWS CloudFormation テンプレートについて説明します AWS Transfer Family。これらのテンプレートはセットアッププロセスを自動化し、AS2 ファイル転送のベストプラクティスを実装するのに役立ちます。
+ 基本的な AS2 テンプレートについては、「」を参照してください。 [テンプレートを使用して Transfer Family AS2 スタックのデモを作成する](create-as2-transfer-server.md#as2-cfn-demo-template)
+ HTTP ヘッダーをカスタマイズするための AS2 テンプレートについては、「」を参照してください[AS2 メッセージの HTTP ヘッダーをカスタマイズする](as2-custom-http-headers.md)。

### AS2 テンプレートのカスタマイズ
<a name="as2-template-customization"></a>

提供されたテンプレートは、特定の要件を満たすようにカスタマイズできます。

1. S3 URL からテンプレートをダウンロードします。

1. YAML コードを変更して、次のような設定を調整します。
   + セキュリティ設定と証明書設定
   + ネットワークアーキテクチャと VPC 設定
   + ストレージオプションとファイル処理
   + モニタリングと通知の設定

1. 変更したテンプレートを独自の S3 バケットにアップロードします。

1.  CloudFormation コンソールまたは を使用して、カスタマイズされたテンプレートをデプロイします AWS CLI。

**重要**  
テンプレートをカスタマイズするときは、リソース間の依存関係を維持し、セキュリティのベストプラクティスに従ってください。

### AS2 デプロイのテスト
<a name="as2-template-testing"></a>

テンプレートを使用して AS2 サーバーをデプロイしたら、設定をテストできます。

1. CloudFormation スタックの出力で、サンプルコマンドとエンドポイント情報を確認します。

1. を使用してテストファイル AWS CLI を送信します。

   ```
   aws s3api put-object --bucket your-bucket-name --key test.txt --body test.txt
   aws transfer start-file-transfer --connector-id your-connector-id --send-file-paths /your-bucket-name/test.txt
   ```

1. 送信先 S3 バケットでのファイル配信を確認します。

1. CloudWatch ログで、正常な処理と MDN レスポンスを確認します。

より包括的なテストを行うには、サードパーティーの AS2 クライアントを使用して Transfer Family AS2 サーバーにファイルを送信することを検討してください。

### AS2 テンプレートデプロイのベストプラクティス
<a name="as2-template-best-practices"></a>

AS2 CloudFormation テンプレートを使用する場合は、次のベストプラクティスに従ってください。

セキュリティ  
強力な証明書を使用し、定期的にローテーションします。  
最小特権の IAM ポリシーを実装します。  
セキュリティグループを使用してネットワークアクセスを制限します。

信頼性  
複数のアベイラビリティーゾーンにデプロイします。  
失敗した転送のモニタリングとアラートを実装します。  
失敗した転送の自動再試行を設定します。

パフォーマンス  
転送ボリュームに適したインスタンスタイプを選択します。  
効率的なファイル管理のために S3 ライフサイクルポリシーを実装します。  
ネットワーク設定をモニタリングして最適化します。

コスト最適化  
可変ワークロードには Auto Scaling を使用します。  
古いファイルに S3 ストレージクラスを実装します。  
実際の使用状況に基づいてリソースをモニタリングおよび調整します。

# AS2 の設定
<a name="create-b2b-server"></a>

AS2 対応サーバーを作成するには、以下のコンポーネントも指定する必要があります。
+ **契約** — 二国間取引先契約 (パートナーシップ) は、メッセージ (ファイル) を交換する二者間の関係を定義します。アグリーメントを定義するために、Transfer Family はサーバ、ローカルプロファイル、パートナープロファイル、証明書情報を組み合わせます。Transfer Family AS2 インバウンドプロセスでは、契約が使用されます。
+ **証明書** — 公開鍵 (X.509) 証明書は AS2 通信でメッセージの暗号化と検証に使用されます。証明書はコネクタエンドポイントにも使用されます。
+ **ローカルプロファイルとパートナープロファイル** — ローカルプロファイルは、ローカル (AS2 対応 の Transfer Family サーバー) 組織または「パーティ」を定義します。同様に、パートナープロファイルは、Transfer Family の外部にあるリモートパートナー組織を定義します。

すべての AS2 対応サーバーには必要ありませんが、アウトバウンド転送には**コネクタ**が必要です。コネクタは、アウトバウンド接続のパラメータを取得します。コネクタは、お客様の外部の非 AWS サーバーにファイルを送信するために必要です。

次の図表は、インバウンドプロセスとアウトバウンドプロセスに関与する AS2 オブジェクトの関係を示しています。

![\[インバウンドプロセスとアウトバウンドプロセスに関与する AS2 オブジェクトの関係を示す図。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-architecture-in-out-agree-connect.png)


エンドツーエンドの AS2 設定の例については、「[AS2 設定のセットアップ](as2-example-tutorial.md)」を参照してください。

**Topics**
+ [AS2 設定](#as2-supported-configurations)
+ [AS2 クォータと制限事項](#as2-limitations)
+ [AS2 の特徴と機能](#as2-capabilities)

## AS2 設定
<a name="as2-supported-configurations"></a>

このトピックでは、適用性ステートメント 2 (AS2) プロトコルを使用する転送でサポートされる設定、機能、能力について説明します。これには、承認された暗号やダイジェストも含まれます。

**署名、暗号化、圧縮、MDN**

インバウンドとアウトバウンドのどちらの転送でも、以下の項目は必須またはオプションです。
+ **暗号化** - 必須 (現在サポートされている唯一のトランスポート方法である HTTP トランスポート用)。暗号化されていないメッセージは、Application Load Balancer (ALB) などの TLS 終了プロキシによって転送され、`X-Forwarded-Proto: https` ヘッダーが存在する場合にのみ受け入れられます。
+ **署名** - オプション
+ **圧縮** - オプション (現在サポートされている圧縮アルゴリズムは ZLIB だけです)
+ **メッセージ処理通知 (MDN)** - オプション

**暗号**

次の暗号は、インバウンド転送とアウトバウンド転送の両方でサポートされています。
+ AES128\$1CBC
+ AES192\$1CBC
+ AES256\$1CBC
+ 3DES (下位互換性のみ)

**ダイジェスト**

以下のダイジェストをサポートしています。
+ **インバウンド署名と MDN** - SHA1、SHA256、SHA384、SHA512
+ **アウトバウンド署名と MDN** - SHA1、SHA256、SHA384、SHA512

**MDN**

MDN レスポンスでは、以下のように特定のタイプがサポートされています。
+ **インバウンド転送** - 同期と非同期
+ **アウトバウンド転送** - 同期のみ
+ **Simple Mail Transfer Protocol (SMTP) (E メール MDN)** - サポートされていません

**トランスポート**
+ **インバウンド転送** - 現在サポートされているトランスポートは HTTP のみで、明示的に指定する必要があります。
**注記**  
インバウンド転送に HTTPS を使用する必要がある場合は、Application Load Balancer または Network Load Balancer で TLS を終了できます。これについては、「[HTTPS 経由で AS2 メッセージを受信](send-as2-messages.md#receive-https)」で説明しています。
+ **アウトバウンド転送** - HTTP URL を指定する場合は、暗号化アルゴリズムも指定する必要があります。HTTPS URL を指定する場合、暗号化アルゴリズムに [**なし**] を指定することもできます。

## AS2 クォータと制限事項
<a name="as2-limitations"></a>

このセクションでは、AS2 のクォータと制限について説明します。

**Topics**
+ [AS2 クォータ](#as2-quotas)
+ [シークレットの処理クォータ](#as2-quotas-secrets)
+ [既知の制限事項](#as2-known-limitations)

### AS2 クォータ
<a name="as2-quotas"></a>

AS2 ファイル転送には次のクォータが設定されています。調整可能なクォータの増額をリクエストするには、AWS 全般のリファレンスの [[AWS のサービス のクォータ]](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) を参照してください。


**AS2 クォータ**  

| 名前 | デフォルト | 引き上げ可能 | 
| --- | --- | --- | 
| アウトバウンドリクエストあたりのファイルの最大数 | 10 | 不可 | 
| 1 秒あたりのアウトバウンドリクエストの最大数 | 100 | 不可 | 
| 1 秒あたりのインバウンドリクエストの最大数 | 100 | 不可 | 
| アカウントあたりの最大アウトバウンド帯域幅 (アウトバウンド SFTP リクエストと AS2 リクエストの両方がこの値に影響します) | 50 MB/秒 | 不可 | 

### シークレットの処理クォータ
<a name="as2-quotas-secrets"></a>

AWS Transfer Family は、基本認証を使用している AS2 のお客様 AWS Secrets Manager に代わって を呼び出します。さらに、Secrets Manager は を呼び出します AWS KMS。

**注記**  
これらのクォータは、Transfer Family のシークレットの使用に固有のものではなく、 内のすべてのサービス間で共有されます AWS アカウント。

Secrets Manager `GetSecretValue` の場合、適用されるクォータは、[[AWS Secrets Manager クォータ]](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_limits.html#quotas) で説明されているように **DescribeSecret と GetSecretValue API リクエストの合計レート**です。


**Secrets Manager `GetSecretValue`**  

| 名前 | 値 | 説明 | 
| --- | --- | --- | 
| DescribeSecret および GetSecretValue API リクエストの合計レート | サポートされている各リージョン: 10,000/秒 | DescribeSecret と GetSecretValue API オペレーションを組み合わせた 1 秒あたりの最大トランザクション数。 | 

の場合 AWS KMS、次のクォータが に適用されます`Decrypt`。詳細については、[「各 AWS KMS API オペレーションのリクエストクォータ](https://docs.aws.amazon.com/kms/latest/developerguide/requests-per-second.html#rps-table)」を参照してください。


**AWS KMS `Decrypt`**  

| クォータ名 | デフォルト値 (1 秒あたりのリクエスト) | 
| --- | --- | 
|  暗号化オペレーション (対称) リクエストレート  |  これらの共有クォータは、 AWS リージョン およびリクエストで使用される AWS KMS キーのタイプによって異なります。各クォータは個別に計算されます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/create-b2b-server.html)  | 
|  カスタムキーストアのリクエストクォータ  このクォータは、外部キーストアを使用している場合にのみ適用されます。   |  カスタムキーストアのリクエストクォータは、カスタムキーストアごとに個別に計算されます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/create-b2b-server.html)  | 

### 既知の制限事項
<a name="as2-known-limitations"></a>
+ サーバー側の TCP キープアライブはサポートされていません。クライアントがキープアライブパケットを送信しない限り、350 秒間何も操作しないと接続はタイムアウトします。
+ 有効な契約がサービスによって承認され、Amazon CloudWatch Logs に表示されるには、メッセージに有効な AS2 ヘッダーが含まれている必要があります。
+ AS2 AWS Transfer Family の からメッセージを受信するサーバーは、[RFC 6211 で定義されているように、メッセージ署名を検証するための暗号化メッセージ構文 (CMS) ](https://datatracker.ietf.org/doc/html/rfc6211)アルゴリズム保護属性をサポートする必要があります。この属性は、一部の古い IBM Sterling 製品ではサポートされていません。
+ メッセージ ID が重複していると、「processed/Warning: duplicate-document」メッセージが表示されます。
+ AS2 証明書のキー長は 2048 ビット以上、最大で 4096 ビットでなければなりません。
+ AS2 メッセージまたは非同期 MDN を取引相手の HTTPS エンドポイントに送信する場合、メッセージまたは MDN は、信頼された公的認証機関 (CA) によって署名された有効な SSL 証明書を使用する必要があります。現在、自己署名証明書はアウトバウンド転送でのみサポートされています。
+ エンドポイントは TLS バージョン 1.2 プロトコルと、セキュリティポリシー ([AWS Transfer Family サーバーのセキュリティポリシー](security-policies.md) を参照) で許可されている暗号化アルゴリズムをサポートしている必要があります。
+ AS2 バージョン 1.2 の複数の添付ファイルと証明書交換メッセージ (CEM) は、現在サポートされていません。
+ Basic 認証は現在、アウトバウンドメッセージでのみサポートされています。
+ AS2 プロトコルを使用する Transfer Family サーバーにファイル処理ワークフローをアタッチできますが、AS2 メッセージはサーバーにアタッチされたワークフローを実行しません。

## AS2 の特徴と機能
<a name="as2-capabilities"></a>

次の表は、AS2 を使用する Transfer Family リソースで使用できる機能と能力の一覧です。

### AS2 の機能
<a name="as2-features"></a>

Transfer Family は AS2 向けに以下の機能を提供します。


| Feature | Supported by AWS Transfer Family | 
| --- |--- |
|  [Drummond 認定](https://aws.amazon.com/about-aws/whats-new/2023/06/aws-transfer-family-drummond-group-as2-certification/) | Yes | 
| [AWS CloudFormation サポート](https://docs.aws.amazon.com/transfer/latest/userguide/as2-cfn-demo-template.html)  | Yes | 
| [Amazon CloudWatch メトリクス](https://docs.aws.amazon.com/transfer/latest/userguide/as2-monitoring.html) | Yes | 
| [SHA-2 暗号アルゴリズム](https://docs.aws.amazon.com/transfer/latest/userguide/security-policies.html#cryptographic-algorithms) | Yes | 
| Support for Amazon S3 | Yes | 
| Support for Amazon EFS | No | 
| Scheduled Messages | Yes 1 | 
| AWS Transfer Family Managed Workflows | No | 
| Certificate Exchange Messaging (CEM) | No | 
| Mutual TLS (mTLS) | No | 
| Support for self-signed certificates | Yes | 

1. [Amazon EventBridge を使用して AWS Lambda 関数をスケジュール](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-run-lambda-schedule.html)することで利用可能なアウトバウンドのスケジュールされたメッセージ

### AS2 の送受信機能
<a name="as2-capabilities"></a>

次の表は、 AWS Transfer Family AS2 の送受信機能の一覧です。


| Capability | Inbound: Receiving with server | Outbound: Sending with connector | 
| --- |--- |--- |
| [TLS 暗号化トランスポート (HTTPS)](send-as2-messages.md#as2-https-process) | はい [1] | Yes | 
| Non-TLS Transport (HTTP) | Yes |  はい [2]  | 
| Synchronous MDN | Yes | Yes | 
| Message Compression | Yes | Yes | 
| Asynchronous MDN | Yes | No | 
| Static IP Address | Yes | Yes | 
| Bring Your Own IP Address | Yes | No | 
| Multiple File Attachments | No | No | 
| Basic Authentication | No | Yes | 
| AS2 Restart | Not applicable | No | 
| AS2 Reliability | No | No | 
| Custom Subject per Message | Not applicable | No | 

1. Network Load Balancer (NLB) または Application Load Balancer (ALB) で利用可能なインバウンド TLS 暗号化トランスポート

2. 暗号化が有効な場合にのみアウトバウンドの非 TLS トランスポートが使用可能

# AS2 証明書を管理する
<a name="managing-as2-partners"></a>

このトピックでは、AS2 証明書をインポートして管理する方法について説明します。証明書のインポートは、Transfer Family の AS2 プロセスの最初のステップです。

1. 証明書のインポート

1. [AS2 プロファイルの作成](configure-as2-profile.md)

1. [AS2 サーバーを作成する](create-as2-transfer-server.md) 

1. [AS2 契約を作成する](create-as2-transfer-server.md#as2-agreements)

1. [AS2 コネクタを設定する](configure-as2-connector.md)

## AS2 証明書のインポート
<a name="configure-as2-certificate"></a>

Transfer Family AS2 プロセスでは、転送された情報の暗号化と署名の両方に証明書キーを使用します。パートナーは両方の目的で同じキーを使用することも、それぞれに別のキーを使用することもできます。災害やセキュリティ侵害が発生した場合にデータを復号化できるように、信頼できる第三者が共通の暗号鍵をエスクローに保管している場合は、別々の署名鍵を用意することをおすすめします。個別の署名鍵 (エスクローは行わない) を使用することで、電子署名の否認防止機能を損なうことがなくなります。

**注記**  
AS2 証明書のキー長は 2048 ビット以上、最大で 4096 ビットでなければなりません。

次の点では、この処理中に AS2 証明書がどのように使用されるかを詳しく説明します。
+ インバウンド AS2
  + 取引相手は署名証明書の公開鍵を送信し、この鍵はパートナープロファイルにインポートされます。
  + ローカルパーティは、暗号化証明書と署名証明書用の公開鍵を送信します。その後、パートナーは 1 つまたは複数の秘密鍵をインポートします。ローカルパーティは、署名用と暗号化用に別々の証明書キーを送信することも、両方の目的で同じキーを使用することもできます。
+ アウトバウンド AS2
  + パートナーは暗号化証明書の公開鍵を送信し、この鍵はパートナープロファイルにインポートされます。
  + ローカルパーティは証明書の公開鍵を署名用に送信し、証明書の秘密鍵をインポートして署名します。
  + HTTPS を使用している場合は、自己署名 Transport Layer Security (TLS) 証明書をインポートできます。

証明書を作成する方法については、[ステップ 1: AS2 の証明書を作成する](as2-example-tutorial.md#as2-create-certs) を参照してください。

この手順では、Transfer Family コンソールを使用して証明書をインポートする方法について説明します。 AWS CLI 代わりに を使用する場合は、「」を参照してください[ステップ 2: Transfer Family 証明書リソースとして証明書をインポートする](as2-example-tutorial.md#as2-import-certs-example)。

**AS2 対応証明書を指定するには**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) で AWS Transfer Family コンソールを開きます。

1. 左側のナビゲーションペインで、「**AS2 トレーディングパートナー**」の下にある「**証明書**」を選択します。

1. [**証明書のインポート**] を選択します。

1. **証明書設定**セクションで、**証明書の説明**に、証明書の識別しやすい名前を入力します。説明から証明書の目的を特定できることを確認します。さらに、証明書の役割を選択します。

1. 「**証明書の使用方法**」セクションで、この証明書の目的を選択します。暗号化、署名、またはその両方に使用できます。

   **ヒント: ****暗号化と使用の署名**を選択すると、Transfer Family は 2 つの同一の証明書を作成します (それぞれに独自の ID があります）。1 つは使用値が で、もう 1 `ENCRYPTION` つは使用値が です`SIGNING`。

1. 「**証明書コンテンツ**」セクションで、取引相手からの公開証明書、またはローカル証明書の公開鍵と秘密鍵を入力します。

   「**証明書の内容**」セクションに適切な詳細を入力します。
   + 「**自己署名証明書**」を選択した場合は、証明書チェーンを提供しません。
   + 証明書テキストとそのチェーンを**証明書と証明書チェーン**フィールドに貼り付けます。
   + この証明書がローカル証明書の場合は、秘密鍵を貼り付けます。

1. **[証明書のインポート]** を選択して処理を完了し、インポートした証明書の詳細を保存します。

**注記**  
TLS 証明書は、パートナーのパブリック証明書としてのみインポートできます。**パートナーからパブリック証明書**を選択し、使用のために **Transport Layer Security (TLS)** を選択すると、警告が表示されます。また、TLS 証明書は自己署名である必要があります (つまり、TLS 証明書をインポートするには**自己署名**証明書を選択する必要があります）。

## AS2 証明書のローテーション
<a name="as2-certificate-rotation"></a>

多くの場合、証明書は 6 か月から 1 年間有効です。プロファイルを設定して、長期間保存したい場合があります。これを容易にするために、Transfer Familyは証明書のローテーションを提供しています。プロファイルには複数の証明書を指定できるため、プロファイルを複数年間使用し続けることができます。Transfer Familyは、署名（オプション）と暗号化（必須）に証明書を使用します。希望すれば、両方の目的で単一の証明書を指定できます。

証明書のローテーションは、期限切れの古い証明書を新しい証明書に置き換えるプロセスです。契約のパートナーがアウトバウンド転送用の新しい証明書をまだ設定していない場合や、新しい証明書が使用されている可能性のある期間に、古い証明書で署名または暗号化されたペイロードを送信している可能性がある場合に、転送が中断されないように、移行は段階的に行われます。古い証明書と新しい証明書の両方が有効になる中間期間を「猶予期間」と呼びます。

X.509 証明書には `Not Before` 日付と `Not After` 日付があります。ただし、これらのパラメータでは管理者が十分に制御できない場合があります。Transfer Family は、アウトバウンドのペイロードにどの証明書を使用し、インバウンドのペイロードにど の証明書を受け入れるかを制御するために、`Active Date` および `Inactive Date` 設定を提供します。

### 証明書の有効期限のモニタリング
<a name="as2-certificate-expiry-monitoring"></a>

Transfer Family は、証明書をインポート`DaysUntilExpiry`した後に Amazon CloudWatch メトリクスを発行します。メトリクスは、現在の日付から証明書`InactiveDate`で として指定された日付までの日数を出力します。メトリクスは、CloudWatch メトリクスダッシュボード`Transfer` AWS の名前空間にあります。

このメトリクスには、常に **CertificateId** のメトリクスディメンションがあり、証明書に顧客から提供された場合は、オプションで**説明**ディメンションが含まれます。CloudWatch メトリクスディメンションの詳細については、*「 CloudWatch API リファレンス*」の[「ディメンション](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html)」を参照してください。

**注記**  
Transfer Family の証明書をインポートしてから、このメトリクスを顧客アカウントに発行するまでに最大 1 日かかる場合があります。

このメトリクスを使用して、証明書の有効期限が近づいたときに通知する CloudWatch アラームを作成できます。

アウトバウンド証明書の選択では、転送日より前の最大値が `Inactive Date` として使用されます。インバウンドプロセスでは、`Not Before` および `Not After` の範囲内、`Active Date` および `Inactive Date` の範囲内の証明書を受け付けます。

### 証明書ローテーションの例
<a name="as2-cert-rotate-example"></a>

次の表は、1 つのプロファイルに 2 つの証明書を設定する方法の 1 つを示しています。


**2 つの証明書をローテーション中**  

| 名前 | NOT BEFORE(認証局による管理) | ACTIVE DATE（Transfer Family が設定） | INACTIVE DATE（Transfer Family が設定） | NOT AFTER（認証局によって設定される） | 
| --- | --- | --- | --- | --- | 
| Cert1 (古い証明書) | 2019-11-01 | 2020-01-01 | 2020-12-31 | 2024-01-01 | 
| 証明書 2 (新しい証明書) | 2020 年 11 月 1 日 | 2020-06-01 | 2021-06-01 | 2025-01-01 | 

 次の点に注意してください。
+ 証明書に `Active Date` と `Inactive Date` を指定する場合、範囲は `Not Before` と `Not After` の間の範囲内である必要があります。
+ プロファイルごとに複数の証明書を設定して、すべての証明書を組み合わせた有効な日付範囲がプロファイルを使用する期間をカバーするようにすることをお勧めします。
+ 古い証明書が非アクティブになってから新しい証明書が有効になるまでの間にある程度の猶予時間を設定することをお勧めします。前の例では、最初の証明書は 2020-12-31 まで非アクティブにならず、2 番目の証明書は 2020-06-01 に有効になり、6 か月の猶予期間が与えられます。2020 年 6 月 1 日から 2020 年 12 月 31 日までの期間は、両方の証明書が有効です。

# AS2 プロファイルの作成
<a name="configure-as2-profile"></a>

このトピックでは、AS2 プロセスで使用するプロファイルを作成する方法について説明します。*ローカルプロファイル*は、ローカル (AS2 対応の Transfer Family サーバー) 組織または「パーティー」を定義します。同様に、パートナープロファイルは、Transfer Family の外部にあるリモートパートナー組織を定義します。

1. [AS2 証明書のインポート](managing-as2-partners.md#configure-as2-certificate)

1. AS2 プロファイルの作成

1. [AS2 サーバーを作成する](create-as2-transfer-server.md) 

1. [AS2 契約を作成する](create-as2-transfer-server.md#as2-agreements)

1. [AS2 コネクタを設定する](configure-as2-connector.md)

この手順を使用して、ローカルプロファイルとパートナープロファイルの両方を作成します。ここでは、Transfer Family コンソールを使用して AS2 プロファイルを作成する方法について説明します。 AWS CLI を代わりに使いたい場合は、[ステップ 3: 自分と取引相手のプロファイルを作成する](as2-example-tutorial.md#as2-create-profiles-example) を参照してください。

**AS2 プロファイルを作成するには**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) で AWS Transfer Family コンソールを開きます。

1. 左側のナビゲーションペインの「**AS2 Trading Partners**」で、「**プロフィール**」を選択し、「**プロフィールを作成**」を選択します。

1. 「**プロファイル設定**」セクションで、プロファイルの AS2 ID を入力します。この値は、AS2 プロトコル固有の HTTP ヘッダ `as2-from` と `as2-to` に使用され、取引パートナーシップを識別し、使用する証明書などを決定します。

1. **[プロファイルタイプ]** セクションで、**[ローカルプロファイル]** または **[パートナープロファイル]** を選択します。

1. 「**証明書**」セクションで、ドロップダウンメニューから 1 つまたは複数の証明書を選択します。

   **ヒント: **ドロップダウンメニューにリストされていない証明書をインポートする場合は、**新しい証明書のインポート**を選択します。これにより、「**証明書のインポート**」画面に新しいブラウザウィンドウが開きます。証明書をインポートする手順については、[AS2 証明書のインポート](managing-as2-partners.md#configure-as2-certificate) を参照してください。

1. (オプション) **[Tags]** セクションで、このプロファイルを識別するためにキーと値のペアを 1 つ以上指定します。

1. **[プロファイルの作成]** を選択してプロセスを完了し、新しいプロファイルを保存します。

# AS2 サーバーを作成する
<a name="create-as2-transfer-server"></a>

このトピックでは、コンソールまたは CloudFormation テンプレートを使用して、AS2-enabled Transfer Family サーバーを作成する手順について説明します。エンドツーエンドの AS2 設定の例については、「[AS2 設定のセットアップ](as2-example-tutorial.md)」を参照してください。AS2 サーバーを作成したら、サーバーに契約を追加できます。

1. [AS2 証明書のインポート](managing-as2-partners.md#configure-as2-certificate)

1. [AS2 プロファイルの作成](configure-as2-profile.md)

1. AS2 サーバーを作成する

1. [AS2 契約を作成する](#as2-agreements)

1. [AS2 コネクタを設定する](configure-as2-connector.md)

**Topics**
+ [Transfer Family コンソールを使用して AS2 サーバーを作成する](#create-server-as2-console)
+ [テンプレートを使用して Transfer Family AS2 スタックのデモを作成する](#as2-cfn-demo-template)
+ [AS2 契約を作成する](#as2-agreements)

## Transfer Family コンソールを使用して AS2 サーバーを作成する
<a name="create-server-as2-console"></a>

ここでは、Transfer Family コンソールを使用して AS2 対応サーバーを作成する方法について説明します。 AWS CLI 代わりに を使用する場合は、「」を参照してください[ステップ 4: AS2 プロトコルを使用する Transfer Family サーバーを作成する](as2-example-tutorial.md#as2-example-server)。

**注記**  
AS2 プロトコルを使用する Transfer Family サーバーにファイル処理ワークフローをアタッチできますが、AS2 メッセージはサーバーにアタッチされたワークフローを実行しません。

**AS2 対応サーバーを作成するには**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) で AWS Transfer Family コンソールを開きます。

1. 左のナビゲーションペインで「**サーバー**」を選択し、「**サーバーの作成**」を選択します。

1. **[プロトコルの選択]** ページで **[AS2 (適用性ステートメント 2)]** を選択し、**[次へ]** を選択します。

1. **[ID プロバイダーの選択]** ページで、**[次へ]** を選択します。
**注記**  
AS2 では、AS2 プロトコルでは基本認証がサポートされていないため、ID プロバイダーを選択できません。代わりに、仮想プライベートクラウド (VPC) セキュリティグループを介してアクセスを制御します。

1. 「**エンドポイントの選択**」ページで、次のようにする：  
![\[コンソールのスクリーンショット。「エンドポイントの選択」ページで「VPC ホスト型」が選択されています。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/create-server-choose-endpoint-vpc-internal.png)

   1. [**Endpoint type**] (エンドポイントタイプ) で、サーバーのエンドポイントのホストになる **VPC** ホストテッドエンドポイントタイプを選択します。VPC ホスト・エンドポイントの設定については、[Virtual Private Cloud でサーバーを作成する](create-server-in-vpc.md)を参照してください。
**注記**  
AS2 プロトコルでは、パブリックにアクセス可能なエンドポイントはサポートされません。VPC エンドポイントにインターネット経由でアクセスできるようにするには、**[アクセス]** で **[インターネット向け]** を選択し、Elastic IP アドレスを指定します。

   1. 「**アクセス**」の場合は、以下のオプションのいずれかを選択する：
      + **[内部]** — このオプションを選択すると、VPC内およびVPCに接続された環境（オンプレミスのデータセンターなど）から Direct Connect またはVPN経由でアクセス可能になります。
      + **インターネットと向き合う** – Direct Connect または VPN 経由のオンプレミスデータセンターなど、インターネット経由で、VPC 内および VPC 接続環境内からアクセスできるようにするには、このオプションを選択します。

        **[インターネット向け]** を選択した場合は、プロンプトが表示されたら Elastic IP アドレスを入力します。

   1. 「**VPC**」では、既存の VPC を選択するか、「**VPC の作成**」を選択して新しい VPC を作成します。

   1. [**FIPS Enabled]** (FIPS 対応) で [**FIPS Enabled endpoint**] (FIPS 対応エンドポイント) チェックボックスをオフのままにします。
**注記**  
AS2 プロトコルでは、FIPS 対応のエンドポイントはサポートされません。

   1. [**次へ**] を選択します。

1. **[ドメインの選択]** ページで「**Amazon S3**」を選択し、選択したプロトコルを使用してファイルをオブジェクトとして保存およびアクセスします。

   [**次へ**] を選択します。

1. **[追加詳細の設定]** ページで、必要な設定を選択します。
**注記**  
AS2 と一緒に他のプロトコルを設定する場合は、追加の詳細設定がすべて適用されます。ただし、AS2 プロトコルの場合、適用される設定は**[CloudWatch ロギング]** セクションと **[タグ]** セクションの設定だけです。  
CloudWatch ロギングロールの設定はオプションですが、メッセージのステータスを確認して設定上の問題をトラブルシューティングできるように設定することを強くお勧めします。

1. **[レビューと作成]** ページで、選択内容が正しいことを確認してください。
   + 設定を編集する場合は、変更するステップの横にある **[編集]** を選択します。
**注記**  
ステップを編集する場合は、編集の対象として選択したステップの後で各ステップの確認をお勧めします。
   + 変更がない場合、[**Create server**] (サーバーの作成) を選択してサーバーを作成します。[**Servers**] (サーバー) ページに誘導され、次に示すように新しいサーバーの一覧が表示されます。

     新しいサーバーのステータスが「**オンライン**」に変わるまで、数分かかることがあります。その時点で、サーバーはユーザーのためにファイルオペレーションを実行できます。

## テンプレートを使用して Transfer Family AS2 スタックのデモを作成する
<a name="as2-cfn-demo-template"></a>

ASAS2-enabled Transfer Family サーバーをすばやく作成するために、自己完結型の CloudFormation テンプレートを提供しています。このテンプレートは、パブリック Amazon VPC エンドポイント、証明書、ローカルプロファイルとパートナープロファイル、契約、コネクタを使用してサーバーを設定します。

基本的な AS2 サーバーテンプレートは、次のリソースを作成します。
+ VPC エンドポイントを持つ AS2-enabled Transfer Family サーバー
+ 証明書を持つローカルおよびパートナー AS2 プロファイル
+ プロファイル間の契約
+ ファイルストレージ用の Amazon S3 バケット
+ 必要な IAM ロールとポリシー
+ CloudWatch ログ記録設定

 このテンプレートを使用する前に、次の点に注意してください。
+ このテンプレートからスタックを作成した場合、使用した AWS リソースに対する料金が発生します。
+ テンプレートは複数の証明書を作成し、 に配置し AWS Secrets Manager て安全に保存します。このサービスの使用には料金がかかるため、これらの証明書は必要に応じて Secrets Manager から削除できます。Secrets Manager でこれらの証明書を削除しても、Transfer Family サーバーからは削除されません。したがって、デモスタックの機能には影響しません。ただし、本番環境の AS2 サーバーで使用する証明書については、Secrets Manager を使用して、保存されている証明書を管理し、定期的にローテーションすることをおすすめします。
+ テンプレートはベースとしてのみ使用し、主にデモンストレーションの目的で使用することが推奨されます。このデモスタックを本番環境で使用する場合は、テンプレートの YAML コードを変更して、より堅牢なスタックを作成することをお勧めします。例えば、本番稼働レベルの証明書を作成し、本番環境で使用できる AWS Lambda 関数を作成します。

**CloudFormation テンプレートから AS2 対応の Transfer Family サーバーを作成するには**

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

1. 左のナビゲーションペインで **[Stacks]** (スタック) をクリックします。

1. [**スタックの作成**] を選択し、[**With new resources (standard) 新しいリソースを使用 (標準)**] を選択します。

1. **「前提条件 - テンプレートを準備する**」セクションで、**「既存のテンプレートを選択する**」を選択します。

1. このリンクで [AS2 デモテンプレート](https://s3.amazonaws.com/aws-transfer-resources/as2-templates/aws-transfer-as2-basic.template.yml)をコピーして [**Amazon S3 URL**] フィールドに貼り付けます。

1. [**次へ**] を選択します。

1. **[スタックの詳細を指定]** ページで、スタックに名前を付け、次のパラメータを指定します。
   + **[AS2]** で、**[ローカル AS2 ID]** と **[パートナー AS2 ID]** の値を入力するか、デフォルトの `local` と `partner` をそれぞれ受け入れます。
   + **[ネットワーク]** で、**[セキュリティグループの進入 CIDR IP]** の値を入力するか、デフォルトの `0.0.0.0/0` を受け入れます。
**注記**  
この値は CIDR 形式で、AS2 サーバーへの受信トラフィックに許可される IP アドレスを指定します。デフォルト値の `0.0.0.0/0` では、すべての IP アドレスを許可します。
   + **[全般]** で、**[プレフィックス]** の値を入力するか、デフォルトの `transfer-as2` を受け入れます。このプレフィックスは、スタックによって作成されるリソース名の前に置かれます。例えば、デフォルトのプレフィックスを使用する場合、Amazon S3 バケットには `transfer-as2-amzn-s3-demo-bucket` という名前が付けられます。

1. [**次へ**] を選択します。[**スタックオプションの設定**] ページで、[**次へ**] を選択します。

1. 作成しようとするスタックの詳細を確認してから [**スタックの作成**] を選択します。
**注記**  
ページの下部の****「機能」で、 が AWS Identity and Access Management (IAM) リソースを作成する CloudFormation 可能性があることを確認する必要があります。

スタックを作成したら、 AWS Command Line Interface () を使用して、パートナーサーバーからローカル Transfer Family サーバーにテスト AS2 メッセージを送信できますAWS CLI。テストメッセージを送信するためのサンプル AWS CLI コマンドが、スタック内の他のすべてのリソースとともに作成されます。

このサンプルコマンドを使用するには、スタックの **[出力]** タブに移動し、**TransferExampleAs2Command** コマンドをコピーします。その後、 AWS CLIを使用してコマンドを実行できます。をまだインストールしていない場合は AWS CLI、「 *AWS Command Line Interface ユーザーガイド*[」の「 の最新バージョンのインストールまたは更新 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

このサンプルコマンドの形式は次のとおりです。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key test.txt && aws transfer start-file-transfer --region aws-region --connector-id TransferConnectorId --send-file-paths /amzn-s3-demo-bucket/test.txt
```

**注記**  
このコマンドのバージョンには、スタック内の `amzn-s3-demo-bucket` および `TransferConnectorId` リソースの実際の値が含まれています。

このサンプルコマンドは、`&&` 文字列を使用して連結された 2 つのコマンドで構成されています。

最初のコマンドは、バケットに新しい空のテキストファイルを作成します。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key test.txt
```

次に、2 番目のコマンドはコネクタを使用して、パートナープロファイルからローカルプロファイルにファイルを送信します。Transfer Family サーバーには、ローカルプロファイルがパートナープロファイルからのメッセージを受け入れることを許可する契約が設定されています。

```
aws transfer start-file-transfer --region aws-region --connector-id TransferConnectorId --send-file-paths /amzn-s3-demo-bucket/test.txt
```

コマンドを実行したら、Amazon S3 バケット (`amzn-s3-demo-bucket`) に移動して内容を表示できます。コマンドが成功した場合は、バケットには次のオブジェクトが表示されます。
+ `processed/` - このフォルダには、転送されたファイルと MDN レスポンスを記述した JSON ファイルが含まれています。
+ `processing/` - このフォルダには、処理中のファイルが一時的に保存されますが、転送が完了すると、このフォルダは空になるはずです。
+ `server-id/` - このフォルダは、Transfer Family サーバー ID に基づいて名前が付けられています。これには `from-partner` (このフォルダにはパートナーの AS2 ID に基づいて動的に名前が付けられます) が含まれており、フォルダ自体に `failed/`、`processed/`、`processing/` フォルダが含まれています。`/server-id/from-partner/processed/` フォルダには、転送されたテキストファイルのコピーと、対応する JSON ファイルと MDN ファイルが格納されます。
+ `test.txt` - このオブジェクトは転送された (空の) ファイルです。

## AS2 契約を作成する
<a name="as2-agreements"></a>

契約はTransfer Family サーバーに関連付けられています。AS2プロトコルを使用してTransferFamilyを使用してメッセージまたはファイルを交換する取引パートナー向けの詳細を指定します。「インバウンド」転送（パートナー所有の外部ソースからTransTransfer Family ilyサーバーへのAS2ファイルの送信）

ここでは、Transfer Family コンソールを使用して AS2 契約を作成する方法について説明します。 AWS CLI 代わりに を使用する場合は、「」を参照してください[ステップ 5: 自分とパートナーとの間で契約を作成する](as2-example-tutorial.md#as2-create-agreement-example)。

**Transfer Family サーバーの契約を作成するには**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) で AWS Transfer Family コンソールを開きます。

1. 左側のナビゲーションペインで、**[Servers]** を選択し、AS2 プロトコルを使用するサーバーを選択します。

   別の方法として、AS2 プロトコルを使用する Transfer Family サーバーが少なくとも 1 つある限り、**AS2 取引先**メニューから**メッセージを受信する契約**を選択します。次に、**契約の作成**画面で、この契約を関連付ける AS2 サーバーを選択します。

1. [サーバー詳細] ページで、**[契約]** セクションまで下にスクロールします。

1. 「**契約を追加**」を選択します。

1. 契約パラメータを次のように入力します。

   1. **[契約設定]** セクションで、説明的な名前を入力します。契約の目的を特定できることを確認します。また、契約書の **[ステータス]** を **[有効]**（デフォルトで選択されている）または **[無効]** のいずれかに設定します。

   1. 「**コミュニケーション設定**」セクションで、ローカルプロファイルとパートナープロファイルを選択します。また、メッセージ署名を適用するかどうかを選択します。
      + デフォルトでは、**Enforce メッセージ署名**が有効になっています。つまり、Transfer Family は、この契約の取引相手からの署名されていないメッセージを拒否します。
      + この設定をクリアすると、Transfer Family は、この契約の取引相手からの未署名メッセージを受け入れることができます。

   1. **Inbox ディレクトリ設定**セクションで、次の情報を指定します。
      + **AS2 メッセージ、MDN ファイル、JSON ステータスファイルを保存する個別のディレクトリを指定する**を選択するかどうかを決定します。
        + このオプションを選択した場合は、ペイロードファイル、失敗したファイル、MDN ファイル、ステータスファイル、一時ファイルに別々の場所を指定します。
        + このオプションをオフにすると、すべての AS2 ファイルは、ベースディレクトリに指定した場所に移動します。
      + **S3 バケット** で、Amazon S3 バケットを選択します。
      + **プレフィックス**には、バケットにファイルを保存するために使用するプレフィックス (フォルダ) を入力できます。

        たとえば、**amzn-s3-demo-bucket**バケットとプレフィックス**incoming**に と入力すると、AS2 ファイルは `/amzn-s3-demo-bucket/incoming`フォルダに保存されます。
      + **AWS IAM ロール**で、指定したバケットにアクセスできるロールを選択します。
      + **ファイル名を保持する** で、受信 AS2 メッセージペイロードの元のファイル名を保持するかどうかを選択します。
        + この設定を選択すると、ファイルが Amazon S3 に保存されるときに、取引相手から提供されたファイル名が保持されます。
        + この設定をオフにすると、Transfer Family がファイルを保存するときに、「」の説明に従ってファイル名が調整されます[ファイル名と場所](send-as2-messages.md#file-names-as2)。

   1. （オプション）「**タグ**」セクションにタグを追加します。

   1. 契約書のすべての情報を入力したら、「**契約を作成**」を選択します。

新しい契約がサーバー詳細ページの「**契約**」セクションに表示されます。

# AS2 コネクタを設定する
<a name="configure-as2-connector"></a>

コネクタの目的は、「アウトバウンド」転送について取引パートナー間の関係を確立することです。つまり、AS2ファイルをTransfer Familyサーバーからパートナーが所有する外部の宛先に送信します。コネクタには、ローカルパーティ、リモートパートナー、およびそれらの証明書を (ローカルプロファイルとパートナープロファイルを作成して) 指定します。

コネクタを設定したら、取引相手に情報を転送できます。各 AS2 サーバーには 3 つの静的 IP アドレスが割り当てられます。AS2 コネクタは、これらの IP アドレスを使用してAS2 経由で取引相手に非同期 MDNsを送信します。

**注記**  
取引相手が受信するメッセージサイズは、Amazon S3 のオブジェクトサイズと一致しません。この不一致は、AS2 メッセージが送信前にファイルをエンベロープに包んでしまうために発生します。そのため、ファイルを圧縮して送信しても、ファイルサイズが大きくなる可能性があります。そのため、取引相手の最大ファイルサイズが、送信するファイルのサイズよりも大きいことを確認してください。

1. [AS2 証明書のインポート](managing-as2-partners.md#configure-as2-certificate)

1. [AS2 プロファイルの作成](configure-as2-profile.md)

1. [AS2 サーバーを作成する](create-as2-transfer-server.md)

1. [AS2 契約を作成する](create-as2-transfer-server.md#as2-agreements)

1. AS2 コネクタを作成する

## AS2 コネクタを作成する
<a name="create-as2-connector"></a>

ここでは、 AWS Transfer Family コンソールを使用して AS2 コネクタを作成する方法について説明します。 AWS CLI 代わりに を使用する場合は、「」を参照してください[ステップ 6: 自分とパートナーとの間でコネクタを作成する](as2-example-tutorial.md#as2-create-connector-example)。

**AS2 コネクターを作成するには**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) で AWS Transfer Family コンソールを開きます。

1. 左側のナビゲーションペインで、**AS2 取引先**メニューから**メッセージを送信するコネクタ**を選択し、**AS2 コネクタの作成**を選択します。

1. **[コネクタ設定]** セクションで、以下の情報を指定します。
   + **[URL]** — アウトバウンド接続の URL を入力します。
   + **アクセスロール** – 使用する (IAM) ロールの Amazon リソースネーム AWS Identity and Access Management (ARN) を選択します。`StartFileTransfer` リクエストで使用されるファイルロケーションの親ディレクトリに対して、このロールが読み取りと書き込みのアクセスを提供することを確認します。さらに、`StartFileTransfer` で送信するファイルの親ディレクトリに対する読み取り/書き込みアクセスを提供していることを確認してください。
**注記**  
コネクタに Basic 認証を使用している場合、アクセスロールにはシークレットの `secretsmanager:GetSecretValue` 権限が必要です。シークレットが AWS マネージドキー ではなくカスタマーマネージドキーを使用して暗号化されている場合 AWS Secrets Manager、ロールにはそのキーに対する `kms:Decrypt` アクセス許可も必要です。シークレットにプレフィックス `aws/transfer/` を付けた名前を付けると、「[シークレットを作成する権限の例](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_examples_wildcard)」に示すように、ワイルドカード文字 (`*`) を使用して必要な権限を追加できます。
   + **[ロギングロール]** (オプション) — CloudWatch ログにイベントをプッシュするために使用するコネクタの IAM ロールを選択します。

1. **[AS2 設定]** セクションで、ローカルプロファイルとパートナープロファイル、暗号化アルゴリズムと署名アルゴリズム、転送された情報を圧縮するかどうかを選択します。次の点に注意してください。
   + **Preserve S3 Content-Type **パラメータはデフォルトで有効になっています。

     Transfer Family を設定すると、ファイル拡張子に基づいてコンテンツタイプがマッピング`Content-Type`されるのではなく、S3 内のオブジェクトに関連付けられている Amazon S3 が使用されます。S3 オブジェクトのコンテンツタイプを使用するのではなく、ファイル拡張子に基づいて AS2 メッセージのコンテンツタイプをマッピングする場合は、この設定をクリアします。
   + 暗号化アルゴリズムでは、それを必要とするレガシークライアントをサポートする必要がある`DES_EDE3_CBC`場合を除き、 を選択しないでください。これは弱い暗号化アルゴリズムです。
   + **[件名]** は、コネクタで送信される AS2 `subject` メッセージの HTTP ヘッダー属性として使用されます。
   + 暗号化アルゴリズムなしでコネクタを作成する場合は、プロトコル`HTTPS`として を指定する必要があります。

1. [**基本認証**] セクションで、以下の情報を指定します。
   + サインオン認証情報を送信メッセージと一緒に送信するには、**[基本認証を有効にする]** を選択します。送信メッセージで認証情報を送信したくない場合は、**[基本認証を有効にする]** をオフのままにします。
   + 認証を使用している場合は、シークレットを選択するか作成してください。
     + 新しいシークレットを作成するには、**[新しいシークレットを作成]** を選択し、ユーザー名とパスワードを入力します。これらの認証情報は、パートナーのエンドポイントに接続するユーザーと一致する必要があります。  
![\[AWS Transfer Family コンソールの「コネクタの作成」ページに、新しいシークレットの作成が選択された基本認証セクションが表示されます。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-basic-auth-create-secret.png)
     + 既存のシークレットを使用するには、「**既存シークレットの選択**」を選択し、ドロップダウンメニューからシークレットを選択します。Secrets Manager で正しくフォーマットされたシークレットを作成する方法については、[AS2 コネクタの基本認証を有効にします。](#as2-secret-create) を参照してください。  
![\[AWS Transfer Family コンソールの「コネクタの作成」ページに、既存のシークレットを選択する「基本認証」セクションが表示されます。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-basic-auth-select-secret.png)

1. **[MDN 設定]** セクションで、以下の情報を指定します。
   + **[MDN をリクエスト]** — AS2 経由でメッセージを正常に受信した後に、取引相手に MDN の送信を要求することができます。
   + **[署名済み MDN]** — MDN への署名を要求するオプションがあります。このオプションは、**[MDN をリクエスト]** を選択した場合にのみ使用できます。

1. すべての設定を確認したら、**AS2 コネクタの作成**を選択してコネクタを作成します。

新しいコネクタの ID がリストに追加された **[コネクタ]** ページが表示されます。コネクタの詳細を表示するには、[AS2 コネクターの詳細を表示](#connectors-view-info) を参照してください。

## AS2 コネクタアルゴリズム
<a name="as2-connectors-details"></a>

AS2 コネクタを作成すると、次のセキュリティアルゴリズムがコネクタにアタッチされます。


| タイプ | アルゴリズム | 
| --- | --- | 
| TLS 暗号 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 

## AS2 コネクタの基本認証
<a name="as2-basic-auth"></a>

AS2 プロトコルを使用する Transfer Family サーバーを作成または更新すると、送信メッセージに基本認証を追加できます。これを行うには、コネクタに認証情報を追加します。

**注記**  
基本認証は HTTPS を使用している場合にのみ使用できます。

コネクタに認証を使用するには、**[基本認証]** セクションの **[基本認証を有効にする]** を選択します。基本認証を有効にすると、新しいシークレットを作成するか、既存のシークレットを使用するかを選択できます。いずれの場合も、シークレット内の認証情報は、このコネクタを使用する送信メッセージとともに送信されます。認証情報は、取引相手のリモートエンドポイントに接続しようとするユーザーと一致する必要があります。

次のスクリーンショットは、**[基本認証を有効にする]** と **[新しいシークレットを作成する]** が選択されていることを示しています。これらの選択をした後、秘密のためのユーザー名とパスワードを入力できます。

![\[Transfer Family コンソールの [コネクタ] ページに、コネクタのメッセージ認証情報が表示されます。この場合、[基本認証を有効にする] が選択され、[新しいシークレットを作成する] が選択されます。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-basic-auth-create-secret.png)


次のスクリーンショットは、**[基本認証を有効にする]** が選択され、**[既存のシークレットを選択する]** が選択されていることを示しています。シークレットは、[AS2 コネクタの基本認証を有効にします。](#as2-secret-create) で説明されているように、正しい形式でなければなりません。

![\[Transfer Family コンソールの [コネクタ] ページに、コネクタのメッセージ認証情報が表示されます。この場合、[基本認証を有効にする] が選択され、[既存のシークレットを選択する] が選択されます。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-basic-auth-select-secret.png)


## AS2 コネクタの基本認証を有効にします。
<a name="as2-secret-create"></a>

AS2 コネクタの基本認証を有効にすると、Transfer Family コンソールで新しいシークレットを作成することも、 AWS Secrets Managerで作成したシークレットを使用することもできます。いずれの場合も、シークレットは Secrets Manager に保存されます。

**Topics**
+ [コンソールで新しいシークレットを作成する](#as2-secret-details-console)
+ [既存の シークレットを使用](#use-existing-secret)
+ [でシークレットを作成する AWS Secrets Manager](#as2-secret-details-asm)

### コンソールで新しいシークレットを作成する
<a name="as2-secret-details-console"></a>

コンソールでコネクタを作成する場合、新しいシークレットを作成できます。

新しいシークレットを作成するには、[**新しいシークレットを作成**] を選択し、ユーザー名とパスワードを入力します。これらの認証情報は、パートナーのエンドポイントに接続するユーザーと一致する必要があります。

![\[AWS Transfer Family コンソールの「コネクタの作成」ページには、新しいシークレットの作成が選択された基本認証セクションが表示されます。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-basic-auth-create-secret.png)


**注記**  
コンソールで新しいシークレットを作成する場合、シークレット名は **/aws/transfer/*connector-id*** という命名規則に従います。ここで、「*connector-id*」は作成するコネクタの ID です。 AWS Secrets Managerでシークレットを探す際には、この点を考慮してください。

### 既存の シークレットを使用
<a name="use-existing-secret"></a>

コンソールでコネクタを作成する場合、既存のシークレットを指定できます。

既存のシークレットを使用するには、「**既存シークレットの選択**」を選択し、ドロップダウンメニューからシークレットを選択します。Secrets Manager で正しくフォーマットされたシークレットを作成する方法については、[でシークレットを作成する AWS Secrets Manager](#as2-secret-details-asm) を参照してください。

![\[AWS Transfer Family コンソールの「コネクタの作成」ページには、既存のシークレットを選択する「基本認証」セクションが表示されます。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-basic-auth-select-secret.png)


### でシークレットを作成する AWS Secrets Manager
<a name="as2-secret-details-asm"></a>

次の手順では、AS2 コネクタで使用する適切なシークレットを作成する方法について説明します。

**注記**  
基本認証は HTTPS を使用している場合にのみ使用できます。<a name="as2-auth-secret-key"></a>

**AS2 基本認証用のSecrets Manager にユーザー認証情報を保存するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) で AWS Secrets Manager コンソールを開きます。

1. 左側のナビゲーションペインで **[サーバー]** を選択します。

1. [**シークレット**]ページで、[**新しいシークレットの保存**]を選択します。

1. [**シークレットタイプの選択**] ページの[**シークレットタイプ**] で[**その他のシークレットタイプ**] を選択します。

1. **[キー/値のペア]** セクションで、**[キー/値]** タブを選択します。
   + **キー** — **Username**と入力します。
   + **[値]** — パートナーのサーバーへの接続を許可されているユーザーの名前を入力します。

1. パスワードを入力する場合は、**[行を追加]** を選択し、**[キー/値のペア]** セクションで [Key/Value] タブを選択します。

   **[行を追加]** を選択し、**[キー/値のペア]** セクションで **[キー/値]** タブを選択します。
   + **キー** — **Password**と入力します。
   + [**値**] ー ユーザーのパスワードを入力します。

1. プライベートキーを指定する場合は、**[行を追加]** を選択し、**[キー/値のペア]** セクションで **[Key/Value]** タブを選択します。
   + **キー** — **PrivateKey**と入力します。
   + 「**値**」 — ユーザーの秘密鍵を入力します。この値は OpenSSH 形式で保存する必要があり、リモートサーバーでこのユーザー用に保存されている公開鍵に対応している必要があります。

1. [**次へ**] を選択します。

1. **[シークレットの設定]** ページで、シークレットの名前と説明を入力します。名前には **aws/transfer/** というプレフィックスを使用することをお勧めします。例えば、シークレットを **aws/transfer/connector-1** と名付けることができます。

1. **[次へ]** を選択し、**[ローテーションの設定]** ページのデフォルトを受け入れます。次いで、**[次へ]** を選択します。

1. **[レビュー]** ページで **[ストア]** を選択し、シークレットを作成して保存します。

シークレットを作成したら、コネクタの作成時に選択できます ([AS2 コネクタを設定する](#configure-as2-connector) を参照)。基本認証を有効にするステップで、使用可能なシークレットのドロップダウンリストからシークレットを選択します。

## AS2 コネクターの詳細を表示
<a name="connectors-view-info"></a>

AS2 AWS Transfer Family connector の詳細とプロパティのリストは、 AWS Transfer Family コンソールで確認できます。AS2 コネクタのプロパティには、URL、ロール、プロファイル、mDNS、タグ、監視指標が含まれます。

これはコネクタの詳細を表示する手順です。

**コネクタの詳細を表示するには**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) で AWS Transfer Family コンソールを開きます。

1. 左側のナビゲーションペインで、[**Connectors (コネクタ)**] を選択します。

1. **[コネクタ ID]** 列の識別子を選択すると、選択したコネクタの詳細ページが表示されます。

AS2 コネクタのプロパティは、コネクタの詳細ページで **[編集]** を選択して変更できます。

![\[Transfer Family コンソールのコネクタの詳細ページには、選択したコネクタの URL、アクセスロール、ロギングロールが表示されます。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-connector-details_01-top.png)


![\[Transfer Family コンソールのコネクタの詳細ページには、選択したコネクタの AS2 設定の詳細が表示されます。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-connector-details_02-middle.png)


![\[Transfer Family コンソールコネクタの詳細ページには、選択したコネクタの AS2 基本認証セクションの詳細、タグ、静的 IP、および AS2 モニタリング情報が表示されます。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-basic-auth-details-pane.png)


**注記**  
この情報の多くを別の形式で取得するには、以下を実行します AWS Command Line Interface (AWS CLI コマンド:  

```
aws transfer describe-connector --connector-id your-connector-id
```
詳細については、API リファレンスの[https://docs.aws.amazon.com/transfer/latest/APIReference/API_DescribeConnector.html](https://docs.aws.amazon.com/transfer/latest/APIReference/API_DescribeConnector.html)を参照してください。

# AS2 メッセージの送受信
<a name="send-as2-messages"></a>

このセクションでは、AS2 メッセージを送受信するプロセスについて説明します。また、AS2 メッセージに関連付けられたファイル名と場所に関する詳細も提供します。

次の表に、AS2 メッセージで使用できる暗号化アルゴリズムと、それらを使用できるタイミングを示します。


| 暗号化アルゴリズム | HTTP | HTTPS | 注意事項 | 
| --- |--- |--- |--- |
| AES128\$1CBC | Yes | Yes |  | 
| AES192\$1CBC | Yes | Yes |  | 
| AES256\$1CBC | Yes | Yes |  | 
| DES\$1EDE3\$1CBC | Yes | Yes | Only use this algorithm if you must support a legacy client that requires it, as it is a weak encryption algorithm. | 
| NONE | No | Yes | If you are sending messages to a Transfer Family server, you can only select なし if you are using an Application Load Balancer (ALB). | 

**Topics**
+ [AS2 メッセージプロセスを受信する](#as2-inbound-process)
+ [HTTPS 経由の AS2 メッセージの送受信](#as2-https-process)
+ [AS2 コネクタを使用したファイルの転送](#transfer-as2-connectors)
+ [ファイル名と場所](#file-names-as2)
+ [ステータスコード](#status-codes)
+ [JSON ファイルの例](#file-as2-json)

## AS2 メッセージプロセスを受信する
<a name="as2-inbound-process"></a>

インバウンドプロセスは、 AWS Transfer Family サーバーに転送されるメッセージまたはファイルとして定義されます。受信メッセージの順序は次のとおりです。

1. 管理プロセスまたは自動プロセスが、パートナーのリモート AS2 サーバーで AS2 ファイル転送を開始します。

1. パートナーのリモート AS2 サーバーは、ファイルの内容に署名して暗号化し、Transfer Family でホストされている AS2 インバウンドエンドポイントに HTTP POST リクエストを送信します。

1. サーバー、パートナー、証明書、および契約の設定値を使用して、Transfer Family は AS2 ペイロードを復号化して検証します。ファイルの内容は、設定された Amazon S3 ファイルストアに保存されます。

1. 署名された MDN レスポンスは HTTP レスポンスと一緒に返されるか、別の HTTP POST リクエストを通じて非同期的に元のサーバーに返されます。

1. 取引所に関する詳細が記載された監査証跡が Amazon CloudWatch に書き込まれます。

1. 復号されたファイルは、`inbox/processed` という名前のフォルダにあります。

![\[受信メッセージの処理シーケンスを示す図。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-architecture-inbound.png)


## HTTPS 経由の AS2 メッセージの送受信
<a name="as2-https-process"></a>

このセクションでは、AS2 プロトコルを使用して HTTPS 経由でメッセージを送受信する Transfer Family サーバーを設定する方法について説明します。

**Topics**
+ [HTTPS 経由で AS2 メッセージを送信](#send-https)
+ [HTTPS 経由で AS2 メッセージを受信](#receive-https)

### HTTPS 経由で AS2 メッセージを送信
<a name="send-https"></a>

HTTPS を使用して AS2 メッセージを送信するには、次の情報を含むコネクタを作成します。
+ URL には HTTPS URL を指定
+ 暗号化アルゴリズムでは、使用可能なアルゴリズムのいずれかを選択します。
**注記**  
 暗号化を使用しない (つまり、暗号化アルゴリズム`NONE`に を選択する) ときに Transfer Family サーバーにメッセージを送信するには、Application Load Balancer (ALB) を使用する必要があります。
+ 「[AS2 コネクタを設定する](configure-as2-connector.md)」の説明に従って、コネクタの残りの値を指定します。

### HTTPS 経由で AS2 メッセージを受信
<a name="receive-https"></a>

 AWS Transfer Family AS2 サーバーは現在、ポート 5080 経由の HTTP トランスポートのみを提供します。ただし、選択したポートと証明書を使用して、Transfer Family サーバー VPC エンドポイントの前にあるネットワークまたはアプリケーションロードバランサーで TLS を終了できます。この方法では、受信 AS2 メッセージに HTTPS を使用させることができます。

**前提条件**
+ VPC は Transfer Family サーバー AWS リージョン と同じ にある必要があります。
+ VPC のサブネットは、サーバーを使用するアベイラビリティーゾーン内にある必要があります。
**注記**  
Transfer Family サーバーごとに、最大 3 つのアベイラビリティーゾーンをサポートできます。
+ サーバーと同じリージョンに最大 3 つの Elastic IP アドレスを割り当てます。または、独自の IP アドレス範囲 (BYOIP) を使用することもできます。
**注記**  
Elastic IP アドレスの数は、サーバーエンドポイントで使用するアベイラビリティーゾーンの数と一致する必要があります。

Network Load Balance (NLB) または Application Load Balancer (ALB) のいずれかを設定できます。次の表に、各アプローチの長所と短所を示します。

次の表は、NLB と ALB を使用して TLS を終了する場合の機能の違いを示しています。


| 機能 | Network Load Balancer (NLB) | Application Load Balancer (ALB) | 
| --- | --- | --- | 
| レイテンシー | ネットワークレイヤーで動作するため、レイテンシーが低くなります。 | アプリケーションレイヤーで動作するため、レイテンシーが高くなります。 | 
| 静的 IP のサポート | 静的な Elastic IP アドレスをアタッチできます。 | Elastic IP アドレスをアタッチできない: 基になる IP アドレスを変更できるドメインを提供します。 | 
| 高度なルーティング | 高度なルーティングはサポートされていません。 | 高度なルーティングをサポートします。暗号化なしで AS2 に必要な`X-Forwarded-Proto`ヘッダーを挿入できます。 このヘッダーは、[developer.mozilla.org](https://developer.mozilla.org/) ウェブサイトの [X-Forwarded-Proto](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto) で説明されています。 | 
| TLS/SSL の終了 | TLS/SSL 終了をサポート | TLS/SSL 終了をサポート | 
| 相互 TLS (mTLS) | Transfer Family は現在、mTLS 用の NLB の使用をサポートしていません | mTLS のサポート | 

------
#### [ Configure NLB ]

この手順では、VPC でインターネット向け Network Load Balancer (NLB) を設定する方法について説明します。<a name="create-nlb-AS2"></a>

**Network Load Balancer を作成し、サーバーの VPC エンドポイントをロードバランサーのターゲットとして定義するには**

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

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

1. [**Network Load Balancer**] で、[**Create**] (作成) を選択します。

1. [**基本設定**] セクションで、以下の情報を入力します。
   + **[Name]** (名前) に、対象のロードバランサーを表現した説明的な名前を入力します。
   + [**スキーム**] で、[**インターネット接続**] を選択します。
   + [**IP アドレスタイプ**] で、[**ipv4**] を選択します。

1. **[ネットワークマッピング]** セクションで、以下の情報を入力します。
   + [**VPC**] で、作成した仮想プライベートクラウド (VPC) を選択します。
   + **[マッピング]** で、サーバーエンドポイントで使用しているのと同じ VPC で使用可能なパブリックサブネットに関連付けられているアベイラビリティーゾーンを選択します。
   + 各サブネットの **IPv4 アドレスには**、割り当てた Elastic IP アドレスのいずれかを選択します。

1. **[リスナーとルーティング]** セクションに、以下の情報を入力します。
   + [**プロトコル**] で [**TLS**] を選択します。
   + [**Port (ポート)**] に「**5080**」と入力します。
   + [**デフォルトアクション**] で、[**ターゲットグループの作成**] を選択します。新しいターゲットグループの作成の詳細については、「[対象グループを作成するには](#create-target-group)」を参照してください。

   ターゲットグループを作成した後で、**[デフォルトアクション]** フィールドにその名前を入力します。

1. **[セキュアリスナー設定]** セクションの **[デフォルト SSL/TLS 証明書]** 領域で証明書を選択します。

1. [**ロードバランサーの作成**] を選択し、NLB を作成します。

1. (オプションですが、推奨されます) Network Load Balancer のアクセスログを有効にして、完全な監査証跡を維持します。これについては、「[Network Load Balancer のアクセスログ](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-access-logs.html)」を参照してください。

   TLS 接続は NLB で終了するため、このステップをお勧めします。したがって、Transfer Family AS2 CloudWatch ロググループに反映されるソース IP アドレスは、取引相手の外部 IP アドレスではなく、NLB のプライベート IP アドレスです。

------
#### [ Configure ALB ]

この手順では、VPC で Application Load Balancer (ALB) を設定する方法について説明します。<a name="create-alb-AS2"></a>

**Application Load Balancer を作成し、サーバーの VPC エンドポイントをロードバランサーのターゲットとして定義するには**

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

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

1. [**Application Load Balancer**] で [**作成**] を選択します。

1. ALB コンソールで、ポート 443 (HTTPS) に新しい HTTP リスナーを作成します。

1. (オプション）。相互認証 (mTLS) を設定する場合は、セキュリティ設定とトラストストアを設定します。

   1. SSL/TLS 証明書をリスナーにアタッチします。

   1. **クライアント証明書の処理**で、**相互認証 (mTLS)** を選択します。

   1. **トラストストアで検証**を選択します。

   1. **高度な mTLS 設定**で、CA 証明書をアップロードして信頼ストアを選択または作成します。

1. 新しいターゲットグループを作成し、Transfer Family AS2 サーバーエンドポイントのプライベート IP アドレスをポート 5080 のターゲットとして追加します。新しいターゲットグループの作成の詳細については、「[対象グループを作成するには](#create-target-group)」を参照してください。

1. ポート 5080 で HTTP プロトコルを使用するようにターゲットグループのヘルスチェックを設定します。

1. リスナーからターゲットグループに HTTPS トラフィックを転送する新しいルールを作成します。

1. SSL/TLS 証明書を使用するようにリスナーを設定します。

------

ロードバランサーを設定すると、クライアントはカスタムポートリスナーを介してロードバランサーと通信します。次に、ロードバランサーはポート 5080 を介してサーバーと通信します。<a name="create-target-group"></a>

**対象グループを作成するには**

1. 前の手順で **[ターゲットグループの作成]** を選択すると、新しいターゲットグループの **[グループの詳細を指定]** ページが表示されます。

1.  [**基本設定**] セクションで、以下の情報を入力します。
   + **[ターゲットタイプを選択]** で **[IP アドレス]** を選択します。
   + [**ターゲットグループ名**] に、ターゲットグループの名前を入力します。
   + Protocol の場合****、選択は ALB と NLB のどちらを使用しているかによって異なります。
     + Network Load Balancer (NLB) の場合は、**TCP** を選択します。
     + Application Load Balancer (ALB) の場合は、**HTTP** を選択します。
   + [**Port (ポート)**] に「**5080**」と入力します。
   + [**IP アドレス**] タイプで、[**ipv4**] を選択します。
   + **[VPC]** で、Transfer Family AS2 サーバー用に作成した VPC を選択します。

1. <a name="vpc-register-targets"></a>**ヘルスチェック**セクションで、**ヘルスチェックプロトコル**を選択します。
   + ALB の場合は、**HTTP** を選択します。
   + NLB の場合は、**TCP** を選択します。

1. <a name="vpc-add-to-list"></a>[**次へ**] を選択します。

1. [**ターゲットの登録**] ページで、次の情報を入力します。
   + **[ネットワーク]** では、Transfer Family AS2 サーバー用に作成した VPC が指定されていることを確認します。
   + **[IPv4 アドレス]** では、Transfer Family AS2 サーバーのエンドポイントのプライベート IPv4 アドレスを入力します。

      サーバーのエンドポイントが複数ある場合は、**[IPv4 アドレスを追加]** を選択して別の IPv4 アドレスを入力する行をもう 1 つ追加します。サーバーのすべてのエンドポイントのプライベート IP アドレスを入力し終わるまで、このプロセスを繰り返します。
   + **[ポート]** が **5080** に設定されていることを確認します。
   + **[保留中として以下を含める]** を選択し、**[レビューターゲット]** セクションにエントリを追加します。

1. **[レビューターゲット]** セクションで、IP ターゲットをレビューします。

1. **[ターゲットグループの作成]** を選択し、前の NLB の作成手順に戻り、指示された場所に新しいターゲットグループを入力します。

**Elastic IP アドレスからサーバーへのアクセスをテストします**

Elastic IP アドレスまたは Network Load Balancer の DNS 名を使用して、カスタムポート経由でサーバーに接続します。

**重要**  
ロードバランサーに設定されたサブネットの[ネットワークアクセスコントロールリスト (ネットワーク ACL)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) を使用して、クライアント IP アドレスからサーバーへのアクセスを管理します。ネットワーク ACL のアクセス許可はサブネットレベルで設定されるため、ルールはサブネットを使用するすべてのリソースに適用されます。ロードバランサーのターゲットタイプは**インスタンス**ではなく **IP アドレス**に設定されているため、セキュリティグループを使用してクライアント IP アドレスからのアクセスを制御することはできません。そのため、ロードバランサーはソース IP アドレスを保持しません。[Network Load Balancer のヘルスチェック](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-health-checks.html)が失敗すると、ロードバランサーはサーバーエンドポイントに接続できなくなります。この問題のトラブルシューティングを行うには、次を確認します。  
サーバーの[エンドポイントに関連付けられたセキュリティグループ](https://aws.amazon.com/premiumsupport/knowledge-center/sftp-enable-elastic-ip-custom-port/)が、ロードバランサーに設定されているサブネットからのインバウンド接続を許可していることを確認します。ロードバランサーは、ポート 5080 を介してサーバーエンドポイントに接続できる必要があります。
サーバーの **[状態]** が **[オンライン]** であることを確認します。

## AS2 コネクタを使用したファイルの転送
<a name="transfer-as2-connectors"></a>

AS2コネクタは、Transfer Familyサーバーからパートナーが所有する外部の宛先にAS2メッセージを転送するための取引パートナー間の関係を確立します。

Transfer Family を使用して AS2 メッセージを送信するには、次の `start-file-transfer` AWS Command Line Interface (AWS CLI) コマンドに示すように、コネクタ ID とファイルへのパスを参照します。

```
aws transfer start-file-transfer --connector-id c-1234567890abcdef0 \
--send-file-paths "/amzn-s3-demo-source-bucket/myfile1.txt" "/amzn-s3-demo-source-bucket/myfile2.txt"
```

コネクタの詳細情報を取得するには、次のコマンドを実行しする：

```
aws transfer list-connectors
```

`list-connectors` コマンドは、コネクタのコネクタ ID、URL、Amazon リソースネーム (ARN) を返します。

特定のコネクタのプロパティを返すには、使用する ID を指定して以下のコマンドを実行します。

```
aws transfer describe-connector --connector-id your-connector-id
```

`describe-connector` コマンドは、URL、ロール、プロファイル、メッセージ処理通知 (MDN)、タグ、モニタリングメトリックなど、コネクタのすべてのプロパティを返します。

JSON と MDN ファイルを表示すると、パートナーがファイルを正常に受信したことを確認できます。これらのファイルには、[ファイル名と場所](#file-names-as2) で説明されている規則に従って名前が付けられます。コネクタの作成時にログ記録ロールを設定した場合は、CloudWatch ログで AS2 メッセージのステータスを確認することもできます。

AS2 コネクターの詳細を表示するには、[AS2 コネクターの詳細を表示](configure-as2-connector.md#connectors-view-info)を参照してください。AS2 コネクターの作成についての詳細は、[AS2 コネクタを設定する](configure-as2-connector.md) を参照してください。

**AS2 アウトバウンドメッセージを送信するには**

アウトバウンドプロセスは、 から外部クライアントまたはサービス AWS に送信されるメッセージまたはファイルとして定義されます。アウトバウンドメッセージのシーケンスは以下の通りである：

1. 管理者は `start-file-transfer` AWS Command Line Interface (AWS CLI) コマンドまたは `StartFileTransfer` API オペレーションを呼び出します。この操作は `connector` 設定を参照します。

1. Transfer Family は新しいファイルリクエストを検出し、ファイルを見つけます。ファイルは圧縮、署名、暗号化されます。

1. 転送 HTTP クライアントは HTTP POST リクエストを実行して、ペイロードをパートナーの AS2 サーバーに送信します。

1. このプロセスは、署名された MDN 応答を HTTP 応答 (同期 MDN) とインラインで返します。

1. ファイルがさまざまな転送段階の間を移動すると、プロセスは MDN 応答の受信と処理の詳細を顧客に配信します。

1. リモート AS2 サーバーは、復号化され検証されたファイルをパートナー管理者が利用できるようにします。

![\[送信メッセージの処理シーケンスを示す図。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/as2-architecture-outbound.png)


AS2 処理は、一般的なユースケースと既存の AS2 対応サーバー実装との統合に重点を置いて、RFC 4130 プロトコルの多くをサポートしています。サポートされている構成の詳細については、[AS2 設定](create-b2b-server.md#as2-supported-configurations) を参照してください。

## ファイル名と場所
<a name="file-names-as2"></a>

このセクションでは、AS2 転送のファイル命名規則について説明します。

インバウンドファイル転送については、次の点に注意してください。
+ 基本ディレクトリは契約書で指定します。ベースディレクトリは、Amazon S3 バケット名にプレフィックス (ある場合) を組み合わせたものです。例えば、`/amzn-s3-demo-bucket/AS2-folder`。
+ 受信ファイルが正常に処理されると、ファイル (および対応する JSON ファイル) が `/processed` フォルダに保存されます。例えば、`/amzn-s3-demo-bucket/AS2-folder/processed`。

  JSONファイルには以下のフィールドが含まれる：
  + `agreement-id` 
  + `as2-from`
  + `as2-to`
  + `as2-message-id`
  + `transfer-id`
  + `client-ip`
  + `connector-id`
  + `failure-message`
  + `file-path`
  + `message-subject`
  + `mdn-message-id`
  + `mdn-subject`
  + `requester-file-name`
  + `requester-content-type`
  + `server-id`
  + `status-code`
  + `failure-code`
  + `transfer-size`
+ 受信ファイルを正常に処理できない場合、ファイル (および対応する JSON ファイル) は `/failed` フォルダーに保存されます。例えば、`/amzn-s3-demo-bucket/AS2-folder/failed`。
+ 転送されたファイルは、`original_filename.messageId.original_extension` として `processed` フォルダーに保存されます。つまり、転送のメッセージ ID がファイル名の元の拡張子の前に追加されます。
+ JSON ファイルは `original_filename.messageId.original_extension.json` として作成され、保存されます。追加されるメッセージ ID に加えて、文字列 `.json` は転送されたファイルの名前に追加されます。
+ メッセージ処理通知 (MDN) ファイルが作成され、`original_filename.messageId.original_extension.mdn` という名前で保存されます。追加されるメッセージ ID に加えて、文字列 `.mdn` は転送されたファイルの名前に追加されます。
+ `ExampleFileInS3Payload.dat` という名前の受信ファイルがある場合、次のファイルが作成されます。
  + **File** – `ExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat`
  + **JSON** – `ExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat.json` 
  + **MDN** – `ExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat.mdn` 

アウトバウンド転送の場合、名前は似ていますが、受信メッセージファイルがないことと、転送されたメッセージの転送 ID がファイル名に追加される点が異なります。転送 ID は `StartFileTransfer` API 操作によって (または別のプロセスまたはスクリプトがこの操作を呼び出したときに) 返されます。
+ `transfer-id` はファイル転送に関連付けられる識別子です。`StartFileTransfer` コールの一部であるすべてのリクエストは `transfer-id` を共有します。
+ ベースディレクトリは、ソースファイルに使用するパスと同じです。つまり、ベースディレクトリは `StartFileTransfer` API オペレーションまたは`start-file-transfer` AWS CLI コマンドで指定するパスです。例えば、次のようになります。

  ```
  aws transfer start-file-transfer --send-file-paths /amzn-s3-demo-bucket/AS2-folder/file-to-send.txt
  ```

  このコマンドを実行すると、MDN ファイルと JSON ファイルは `/amzn-s3-demo-bucket/AS2-folder/processed` (転送が成功した場合) または `/amzn-s3-demo-bucket/AS2-folder/failed` (転送に失敗した場合) に保存されます。
+ JSON ファイルは `original_filename.transferId.messageId.original_extension.json` として作成され、保存されます。
+ MDN ファイルは `original_filename.transferId.messageId.original_extension.mdn` として作成され、保存されます。
+ `ExampleFileOutTestOutboundSyncMdn.dat` という名前のアウトバウンドファイルがある場合、次のファイルが作成されます。
  + **JSON** – `ExampleFileOutTestOutboundSyncMdn.dedf4601-4e90-4043-b16b-579af35e0d83.fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa.dat.json`
  + **MDN** – `ExampleFileOutTestOutboundSyncMdn.dedf4601-4e90-4043-b16b-579af35e0d83.fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa.dat.mdn`

CloudWatch ログを確認して、失敗したものも含め、転送の詳細を確認することもできます。

## ステータスコード
<a name="status-codes"></a>

次の表に、ユーザーまたはパートナーが AS2 メッセージを送信したときに CloudWatch ログに記録できるすべてのステータスコードを示します。異なるメッセージ処理ステップは、異なるメッセージタイプに適用され、モニタリングのみを目的としています。COMPLETED 状態と FAILED 状態は、処理の最終ステップを表し、JSON ファイルに表示されます。


****  

| コード | 説明 | 処理が完了しましたか? | 
| --- | --- | --- | 
| 処理 | メッセージは最終形式に変換中です。たとえば、解凍ステップと復号ステップの両方にこのステータスがあります。 | いいえ | 
| MDN\$1TRANSMIT | メッセージ処理は MDN レスポンスを送信しています。 | いいえ | 
| MDN\$1RECEIVE | メッセージ処理は MDN レスポンスを受信しています。 | いいえ | 
| COMPLETED | メッセージ処理が正常に完了しました。この状態には、インバウンドメッセージまたはアウトバウンドメッセージの MDN 検証に MDN が送信されるときが含まれます。 | はい | 
| FAILED | メッセージの処理に失敗しました。エラーコードのリストについては、「」を参照してください[AS2 エラーコード](as2-monitoring.md#as2-error-codes)。 | はい | 

## JSON ファイルの例
<a name="file-as2-json"></a>

このセクションには、転送が成功した場合と失敗した転送のサンプルファイルなど、インバウンドとアウトバウンドの両方の転送のサンプル JSON ファイルが表示されます。

正常に転送されたアウトバウンドファイルの例:

```
{
  "requester-content-type": "application/octet-stream",
  "message-subject": "File xyzTest from MyCompany_OID to partner YourCompany",
  "requester-file-name": "TestOutboundSyncMdn-9lmCr79hV.dat",
  "as2-from": "MyCompany_OID",
  "connector-id": "c-c21c63ceaaf34d99b",
  "status-code": "COMPLETED",
  "disposition": "automatic-action/MDN-sent-automatically; processed",
  "transfer-size": 3198,
  "mdn-message-id": "OPENAS2-11072022063009+0000-df865189-1450-435b-9b8d-d8bc0cee97fd@PartnerA_OID_MyCompany_OID",
  "mdn-subject": "Message be18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa has been accepted",
  "as2-to": "PartnerA_OID",
  "transfer-id": "dedf4601-4e90-4043-b16b-579af35e0d83",
  "file-path": "/amzn-s3-demo-bucket/as2testcell0000/openAs2/TestOutboundSyncMdn-9lmCr79hV.dat",
  "as2-message-id": "fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa",
  "timestamp": "2022-07-11T06:30:10.791274Z"
}
```

転送に失敗したアウトバウンドファイルの例:

```
{
  "failure-code": "HTTP_ERROR_RESPONSE_FROM_PARTNER",
  "status-code": "FAILED",
  "requester-content-type": "application/octet-stream",
  "subject": "Test run from Id da86e74d6e57464aae1a55b8596bad0a to partner 9f8474d7714e476e8a46ce8c93a48c6c",
  "transfer-size": 3198,
  "requester-file-name": "openAs2TestOutboundWrongAs2Ids-necco-3VYn5n8wE.dat",
  "as2-message-id": "9a9cc9ab-7893-4cb6-992a-5ed8b90775ff@718de4cec1374598",
  "failure-message": "http://Test123456789.us-east-1.elb.amazonaws.com:10080 returned status 500 for message with ID 9a9cc9ab-7893-4cb6-992a-5ed8b90775ff@718de4cec1374598",
  "transfer-id": "07bd3e07-a652-4cc6-9412-73ffdb97ab92",
  "connector-id": "c-056e15cc851f4b2e9",
  "file-path": "/amzn-s3-demo-bucket-4c1tq6ohjt9y/as2IntegCell0002/openAs2/openAs2TestOutboundWrongAs2Ids-necco-3VYn5n8wE.dat",
  "timestamp": "2022-07-11T21:17:24.802378Z"
}
```

正常に転送された受信ファイルの例:

```
{
  "requester-content-type": "application/EDI-X12",
  "subject": "File openAs2TestInboundAsyncMdn-necco-5Ab6bTfCO.dat sent from MyCompany to PartnerA",
  "client-ip": "10.0.109.105",
  "requester-file-name": "openAs2TestInboundAsyncMdn-necco-5Ab6bTfCO.dat",
  "as2-from": "MyCompany_OID",
  "status-code": "COMPLETED",
  "disposition": "automatic-action/MDN-sent-automatically; processed",
  "transfer-size": 1050,
  "mdn-subject": "Message Disposition Notification",
  "as2-message-id": "OPENAS2-11072022233606+0000-5dab0452-0ca1-4f9b-b622-fba84effff3c@MyCompany_OID_PartnerA_OID",
  "as2-to": "PartnerA_OID",
  "agreement-id": "a-f5c5cbea5f7741988",
  "file-path": "processed/openAs2TestInboundAsyncMdn-necco-5Ab6bTfCO.OPENAS2-11072022233606+0000-5dab0452-0ca1-4f9b-b622-fba84effff3c@MyCompany_OID_PartnerA_OID.dat",
  "server-id": "s-5f7422b04c2447ef9",
  "timestamp": "2022-07-11T23:36:36.105030Z"
}
```

転送に失敗した受信ファイルの例:

```
{
  "failure-code": "INVALID_REQUEST",
  "status-code": "FAILED",
  "subject": "Sending a request from InboundHttpClientTests",
  "client-ip": "10.0.117.27",
  "as2-message-id": "testFailedLogs-TestRunConfig-Default-inbound-direct-integ-0c97ee55-af56-4988-b7b4-a3e0576f8f9c@necco",
  "as2-to": "0beff6af56c548f28b0e78841dce44f9",
  "failure-message": "Unsupported date format: 2022/123/456T",
  "agreement-id": "a-0ceec8ca0a3348d6a",
  "as2-from": "ab91a398aed0422d9dd1362710213880",
  "file-path": "failed/01187f15-523c-43ac-9fd6-51b5ad2b08f3.testFailedLogs-TestRunConfig-Default-inbound-direct-integ-0c97ee55-af56-4988-b7b4-a3e0576f8f9c@necco",
  "server-id": "s-0582af12e44540b9b",
  "timestamp": "2022-07-11T06:30:03.662939Z"
}
```

# AS2 メッセージの HTTP ヘッダーをカスタマイズする
<a name="as2-custom-http-headers"></a>

AS2 メッセージを取引相手に送信するときは、特定の要件を満たすように HTTP ヘッダーをカスタマイズするか、パートナーの AS2 サーバー設定との互換性を強化する必要がある場合があります。この CloudFormation テンプレートは、 を介して送信される AS2 メッセージ用にカスタマイズされた HTTP ヘッダーを有効にするインフラストラクチャを作成します AWS Transfer Family。プロキシとして機能するように Amazon API Gateway と Lambda 関数を設定し、取引パートナーの AS2 サーバーに必要なヘッダーを動的に変更できるようにします。

このテンプレートを使用して、以下を実行します。
+ アウトバウンド AS2 メッセージにカスタム HTTP ヘッダーを追加する
+ デフォルトのヘッダー値をカスタム値で上書きする
**重要**  
送信に失敗する可能性があるため、デフォルトのヘッダー値を上書きするときは注意してください。一部の AS2 ヘッダーが必要です。
+ 特定のヘッダー要件を持つ取引相手との互換性を確保する

## テンプレートの概要
<a name="template-overview"></a>

テンプレートは、次の主要コンポーネントを作成します。
+ AS2 メッセージを処理して転送する Lambda 関数
+ Lambda 関数を公開する Amazon API Gateway 
+ Lambda 関数の IAM ロールとアクセス許可
+ HTTPS サポートの条件付きリソース

テンプレートファイルは、[動的 HTTP ヘッダーテンプレート](https://s3.amazonaws.com/aws-transfer-resources/as2-templates/dynamic-http-headers.template.yml)から入手できます。

## 仕組み
<a name="how-it-works"></a>

1. Amazon API Gateway は、 から受信 AS2 メッセージを受信します AWS Transfer Family。

1. リクエストは Lambda 関数に転送されます。

1. Lambda 関数はリクエストを処理し、必要に応じてヘッダーを追加または変更します。

1. その後、変更されたリクエストはパートナーの AS2 サーバーに転送されます。

1. パートナーのサーバーからのレスポンスは、Lambda と Amazon API Gateway を介して に返されます AWS Transfer Family。

## 主な機能
<a name="key-features"></a>
+ *動的ヘッダー変更：* サブジェクトヘッダーのカスタマイズと、その他の必須ヘッダーの追加を許可します。
+ *プロトコルのサポート：* HTTP プロトコルと HTTPS プロトコルの両方で動作します。
+ *柔軟な設定：* パートナーホスト、ポート、パスの指定を許可します。

## 実装の詳細
<a name="implementation-details"></a>

テンプレートは、次の主要コンポーネントを実装します。

### Lambda 関数
<a name="lambda-function"></a>

このソリューションの中核となるのは、以下の Node.js Lambda 関数です。
+ Amazon API Gateway からリクエストを受信する
+ 設定と受信リクエストデータに基づいてヘッダーを変更します
+ 変更されたリクエストをパートナーの AS2 サーバーに転送します
+ HTTP プロトコルと HTTPS プロトコルの両方を処理します
+ エラー処理とログ記録を含む

### Amazon API Gateway
<a name="api-gateway"></a>

HTTP API は次のように設定されます。
+ 受信 AS2 メッセージを受信する
+ Lambda 関数にリクエストをルーティングする
+ レスポンスを に返す AWS Transfer Family

### テンプレートパラメータ
<a name="as2-header-template-parameter-details"></a>

次のようにテンプレートパラメータの情報を入力します。これらのパラメータはすべて文字列であることに注意してください。
+ `Environment`: このパラメータは、テンプレートが作成するリソースに名前を付けるために使用されます。開発環境用か本番環境用かです。有効な値は **dev** と **prod** です。
+ `PartnerHost`: AS2 パートナーサーバーの IP アドレスまたはホスト名。
+ `PartnerPort`: AS2 パートナーサーバーのポート番号。指定しない場合、デフォルトは HTTP の場合は 80、HTTPS の場合は 443 です。
+ `PartnerPath`: パートナーサーバーの AS2 エンドポイントへのパス
+ `ProtocolType`: AS2 通信に使用するプロトコル: 有効な値は **HTTP** と **HTTPS** です。

### 条件付きリソース
<a name="conditional-resources"></a>

HTTPS サポートの場合、テンプレートは条件付きで以下を作成します。
+ CA 証明書用の Lambda レイヤー
+ Lambda 関数の HTTPS 固有の設定

## デプロイと使用
<a name="deployment-and-usage"></a>

**CloudFormation テンプレートを使用して AS2 HTTP ヘッダーをカスタマイズするには**

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

1. 左のナビゲーションペインで **[Stacks]** (スタック) をクリックします。

1. [**スタックの作成**] を選択し、[**With new resources (standard) 新しいリソースを使用 (標準)**] を選択します。

1. **「前提条件 - テンプレートを準備する**」セクションで、**「既存のテンプレートを選択する**」を選択します。

1. このリンク、[動的 HTTP ヘッダーテンプレート](https://s3.amazonaws.com/aws-transfer-resources/as2-templates/dynamic-http-headers.template.yml)をコピーし、**Amazon S3 URL **フィールドに貼り付けます。

1. [**次へ**] を選択します。

1. パラメータの詳細に情報を入力します。詳細については、「」を参照してください[テンプレートパラメータ](#as2-header-template-parameter-details)。

1. [**次へ**] を選択します。[**スタックオプションの設定**] ページで、[**次へ**] を選択します。

1. 作成しようとするスタックの詳細を確認してから [**スタックの作成**] を選択します。
**注記**  
ページの下部の****「機能」で、 が AWS Identity and Access Management (IAM) リソースを作成する CloudFormation 可能性があることを確認する必要があります。

この CloudFormation スタックをデプロイした後：

1. スタック出力で提供されている Amazon API Gateway エンドポイント URL を書き留めます。

1. 既存の AWS Transfer Family Connector を更新して、この新しい Amazon API Gateway エンドポイントを使用します。

1. このソリューションでは、AS2 メッセージを処理し、設定に従ってヘッダーを追加または変更します。

**警告**  
サブジェクトヘッダーを変更するか、パートナーが明示的に期待するヘッダーのみを追加します。他のヘッダーを変更すると、転送が失敗する可能性があります。

# AS2 使用状況のモニタリング
<a name="as2-monitoring"></a>

Amazon CloudWatch と を使用して AS2 アクティビティをモニタリングできます AWS CloudTrail。他の Transfer Family サーバーメトリックスを表示するには、[AWS Transfer Family サーバーの Amazon CloudWatch ログ記録](structured-logging.md) を参照してください


**AS2 メトリクス**  

| メトリクス | 説明 | 
| --- | --- | 
| InboundMessage |  取引相手から正常に受信した AS2 メッセージの総数。 単位: カウント 期間: 5 分  | 
| InboundFailedMessage |  取引相手から正常に受信されなかった AS2 メッセージの総数。つまり、取引相手がメッセージを送信しましたが、Transfer Family サーバーはそれを正常に処理できませんでした。 単位: カウント 期間: 5 分  | 
| OutboundMessage |  Transfer Family サーバーから取引相手に正常に送信された AS2 メッセージの総数。 単位: カウント 期間 = 5 分  | 
| OutboundFailedMessage |  取引相手への送信に受信失敗した AS2 メッセージの総数。つまり、Transfer Family サーバーから送信されましたが、取引相手には正常に受信されませんでした。 単位: カウント 期間: 5 分  | 
| DaysUntilExpiry |  インポート時に証明書に`InactiveDate`設定された によって決定される証明書の有効期限が切れるまでの日数。 単位: カウント ディメンション: `CertificateId`、 `Description` (指定されている場合） 期間: 1 日 詳細については、「[AS2 証明書のローテーション](managing-as2-partners.md#as2-certificate-rotation)」を参照してください。  | 

## AS2 ステータスコード
<a name="as2-monitor-status-codes"></a>

次の表に、ユーザーまたはパートナーが AS2 メッセージを送信したときに CloudWatch ログに記録できるすべてのステータスコードを示します。異なるメッセージ処理ステップは、異なるメッセージタイプに適用され、モニタリングのみを目的としています。COMPLETED 状態と FAILED 状態は、処理の最終ステップを表し、JSON ファイルに表示されます。


****  

| Code | 説明 | 処理が完了しましたか？ | 
| --- | --- | --- | 
| 処理 | メッセージは最終形式に変換中です。たとえば、解凍ステップと復号ステップの両方にこのステータスがあります。 | なし | 
| MDN\$1TRANSMIT | メッセージ処理は MDN レスポンスを送信しています。 | なし | 
| MDN\$1RECEIVE | メッセージ処理は MDN レスポンスを受信しています。 | なし | 
| COMPLETED | メッセージ処理が正常に完了しました。この状態には、インバウンドメッセージまたはアウトバウンドメッセージの MDN 検証に MDN が送信されるときが含まれます。 | あり | 
| FAILED | メッセージの処理に失敗しました。エラーコードのリストについては、「」を参照してください[AS2 エラーコード](#as2-error-codes)。 | あり | 

## AS2 エラーコード
<a name="as2-error-codes"></a>

次の表は、AS2 ファイル転送から受け取る可能性のあるエラーコードの一覧と説明です。


**AS2 エラーコード**  

| Code | エラー | 説明と解決策 | 
| --- | --- | --- | 
| ACCESS\$1DENIED |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-monitoring.html)  |  `SendFilePaths` にいずれも有効でない、または形式に誤りがある `StartFileTransfer` リクエストを処理する際に発生します。つまり、パスに Amazon S3 バケット名がないか、パスに無効な文字が含まれています。Transfer Family がアクセスロールまたはログ記録用のロールを引き受けられない場合にも発生します。パスに有効な Amazon S3 バケット名とキー名が含まれていることを確認します。 | 
| AGREEMENT\$1NOT\$1FOUND | 契約が見つかりませんでした。 | 契約が見つからなかったか、非アクティブなプロファイルに関連付けられているかのどちらかです。Transfer Family サーバー内の契約を更新して、アクティブなプロフィールを含めてください。 | 
| CONNECTOR\$1NOT\$1FOUND | コネクタまたは関連する設定が見つかりませんでした。 |  コネクタが見つからなかったか、非アクティブなプロファイルに関連付けられているかのどちらかです。 コネクタを更新して、アクティブなプロファイルを含めてください。  | 
| CREDENTIALS\$1RETRIEVAL\$1FAILED |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-monitoring.html)  |  AS2 Basic 認証では、シークレットを正しくフォーマットする必要があります。以下の解決策は前のコラムにリストされたエラーに対応しています。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-monitoring.html)  | 
| DECOMPRESSION\$1FAILED | メッセージを解凍できませんでした。 |  送信されたファイルが破損しているか、圧縮アルゴリズムが無効です。 メッセージを再送信して ZLIB 圧縮が使用されていることを確認するか、圧縮を有効にせずにメッセージを再送信してください。  | 
| DECRYPT\$1FAILED | メッセージの message-ID を復号できませんでした。パートナーが正しい公開暗号鍵を持っていることを確認してください。 |  復号に失敗しました。 パートナーが有効な証明書を使用してペイロードを送信したこと、および暗号化が有効な暗号化アルゴリズムを使用して実行されたことを確認してください。  | 
| DECRYPT\$1FAILED\$1INVALID\$1SMIME\$1FORMAT | エンベロープされた mimePart を解析できません。 |  MIME ペイロードが壊れているか、サポートされていない SMIME 形式です。 送信者は、使用している形式がサポートされていることを確認し、ペイロードを再送信する必要があります。  | 
| DECRYPT\$1FAILED\$1NO\$1DECRYPTION\$1KEY\$1FOUND | 一致する復号キーは見つかりませんでした。 |  パートナープロファイルには、メッセージと一致する証明書が割り当てられていなかったか、メッセージと一致した証明書の有効期限が切れているか、無効になっています。 パートナープロファイルを更新し、有効な証明書が含まれていることを確認する必要があります。  | 
| DECRYPT\$1FAILED\$1UNSUPPORTED\$1ENCRYPTION\$1ALG | サポートされていないアルゴリズムを使用して、ID: encryption-ID で SMIME ペイロード復号が要求されました。 |  リモート送信者が、サポートされていない暗号化アルゴリズムで AS2 ペイロードを送信しました。 送信者は、 AWS Transfer Familyでサポートされている暗号化アルゴリズムを選択する必要があります。  | 
| DUPLICATE\$1MESSAGE | 重複または二重処理されたステップ。 |  ペイロードには重複した処理ステップがあります。例えば、暗号化には 2 つのステップがあります。 署名、圧縮、暗号化を単一の手順でメッセージを再送信します。  | 
| ENCRYPT\$1FAILED\$1NO\$1ENCRYPTION\$1KEY\$1FOUND |  プロファイル: *local-profile-ID* に有効な公開暗号化証明書が見つかりません  | Transfer Family はアウトバウンドメッセージを暗号化しようとしていますが、ローカルプロファイルの暗号化証明書が見つかりません。解決オプション:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-monitoring.html) | 
| ENCRYPTION\$1FAILED | ファイル file-name の暗号化に失敗しました。 |  送信するファイルは暗号化できません。 ファイルが AS2 の想定どおりの場所にあり、 AWS Transfer Family にファイルを読み取る権限があることを確認してください。  | 
| FILE\$1SIZE\$1TOO\$1LARGE | ファイルサイズが大きすぎます。 | これは、ファイルサイズの制限を超えるファイルを送受信したときに発生します。 | 
| HTTP\$1ERROR\$1RESPONSE\$1FROM\$1PARTNER |  *partner-URL* が ID=*message-ID* のメッセージに対してステータス 400 を返しました。  |  パートナーの AS2 サーバーと通信すると、予期しない HTTP レスポンスコードが返されました。 パートナーは AS2 サーバーログからより多くの診断を提供できる可能性があります。  | 
| INSUFFICENT\$1MESSAGE\$1SECURITY\$1UNENCRYPTED | 暗号化が必要です。 | パートナーは暗号化されていないメッセージを Transfer Family に送信しましたが、これはサポートされていません。送信者は暗号化されたペイロードを使用する必要があります。 | 
| INVALID\$1ENDPOINT\$1PROTOCOL | HTTP と HTTPS のみがサポートされます。 | AS2 コネクタ設定のプロトコルとして HTTP または HTTPS を指定する必要があります。 | 
| INVALID\$1REQUEST |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-monitoring.html)  |  このエラーには複数の原因があります。以下の解決策は前のコラムにリストされたエラーに対応しています。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-monitoring.html) | 
| INVALID\$1URL\$1FORMAT | 無効な URL 形式: URL |  これは、不正な URL で設定されたコネクタを使用してアウトバウンドメッセージを送信している場合に発生します。 コネクタが有効な HTTP または HTTPS URL で設定されていることを確認します。  | 
| MDN\$1RESPONSE\$1INDICATES\$1AUTHENTICATION\$1FAILED | 該当しない | 受信者は送信者を認証できません。取引相手は、[処理修飾子](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4)「Error: authentication-failed」を含む MDN を Transfer Family に返します。 | 
| MDN\$1RESPONSE\$1INDICATES\$1DECOMPRESSION\$1FAILED | 該当しない | これは、受信者がメッセージの内容を解凍できない場合に発生します。取引相手は、[処理修飾子](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4)「Error: decompression-failed」を含む MDN を Transfer Family に返します。 | 
| MDN\$1RESPONSE\$1INDICATES\$1DECRYPTION\$1FAILED | 該当しない | 受信者がメッセージの内容を復号できません。取引相手は、[処理修飾子](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4)「Error: authentication-failed」を含む MDN を Transfer Family に返します。 | 
| MDN\$1RESPONSE\$1INDICATES\$1INSUFFICIENT\$1MESSAGE\$1SECURITY | 該当しない | 受信者はメッセージが署名されているか暗号化されていることを期待していますが、そうではありません。取引相手は、[処理修飾子](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4)「Error: insufficient-message-security」を含む MDN を Transfer Family に返します。取引相手の期待に合わせて、コネクタの署名や暗号化を有効にします。 | 
| MDN\$1RESPONSE\$1INDICATES\$1INTEGRITY\$1CHECK\$1FAILED | 該当しない | 受信者はコンテンツの完全性を検証できません。取引相手は、[処理修飾子](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4)「Error: integrity-check-failed」を含む MDN を Transfer Family に返します。 | 
| PATH\$1NOT\$1FOUND |  ディレクトリ *file-path* を作成できません。親パスが見つかりませんでした。  | Transfer Family はお客様の Amazon S3 バケットにディレクトリを作成しようとしていますが、バケットが見つかりません。`StartFileTransfer` コマンドに記載されている各パスに既存のバケットの名前が含まれていることを確認します。 | 
| SEND\$1FILE\$1NOT\$1FOUND | ファイルパス file-path が見つかりません。 |  Transfer Family はファイル送信操作でファイルを見つけることができません。 設定したホームディレクトリとパスが有効であること、および Transfer Family にファイルの読み取りアクセス許可があることを確認してください。  | 
| SERVER\$1NOT\$1FOUND | メッセージに関連付けられたサーバーが見つかりません。 | Transfer Family は、メッセージを受信したときにサーバーを見つけることができませんでした。これは、受信メッセージの処理中にサーバーが削除された場合に発生する可能性があります。 | 
| SERVER\$1NOT\$1ONLINE | サーバー server-ID はオンラインではありません。 | Transfer Family サーバーはオフラインです。メッセージを受信して処理できるよう、サーバーを起動します。 | 
| SIGNING\$1FAILED | ファイルに署名できませんでした。 |  送信するファイルには署名ができないか、署名を実行することができませんでした。 ファイルが AS2 の想定どおりの場所にあり、 AWS Transfer Family にファイルを読み取る権限があることを確認してください。  | 
| SIGNING\$1FAILED\$1NO\$1SIGNING\$1KEY\$1FOUND | プロファイル: local-profile-ID の証明書が見つかりません。 | アウトバウンドメッセージを署名しようとしていますが、ローカルプロファイルの署名用証明書が見つかりません。解決オプション:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-monitoring.html) | 
| UNABLE\$1RESOLVE\$1HOST\$1TO\$1IP\$1ADDRESS | ホスト名を IP アドレスに変換できません。 |  Transfer Family は、AS2 コネクタで設定されているパブリック DNS サーバー上で DNS から IP アドレスへの解決を実行できません。 有効なパートナー URL を指定するコネクタを更新してください。  | 
| UNABLE\$1TO\$1CONNECT\$1TO\$1REMOTE\$1HOST\$1OR\$1IP | エンドポイントへの接続がタイムアウトしました。 |  Transfer Family は、設定されたパートナーの AS2 サーバーへのソケット接続を確立できません。 パートナーの AS2 サーバーが設定された IP アドレスで利用できることを確認してください。  | 
| UNABLE\$1TO\$1RESOLVE\$1HOSTNAME | ホスト名 hostname を解決できません。 |  Transfer Family サーバーは、パブリック DNS サーバーを使用してパートナーのホスト名を解決できませんでした。 設定したホストが登録されていることと、DNS レコードが公開されるまでの時間があることを確認してください。  | 
| VERIFICATION\$1FAILED | AS2 メッセージ message-ID の署名検証に失敗したか、MIC コードが一致しませんでした。 | 送信者の署名用証明書がリモートプロファイルの署名用証明書と一致することを確認してください。また、MIC アルゴリズムが と互換性があることを確認します AWS Transfer Family。 | 
| VERIFICATION\$1FAILED\$1NO\$1MATCHING\$1KEY\$1FOUND |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-monitoring.html)  | AWS Transfer Family は受信したメッセージの署名を検証しようとしていますが、パートナープロファイルに一致する署名証明書が見つかりません。解決オプション:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/as2-monitoring.html) | 

# 証明書の有効期限のモニタリング
<a name="certificate-expiry-monitoring"></a>

AWS Transfer Family は AS2 証明書の有効期限を自動的にモニタリングし、Amazon CloudWatch メトリクスを発行して、証明書の有効期限が近づいているタイミングを追跡できるようにします。これにより、証明書の更新をプロアクティブに管理し、サービスの中断を回避できます。

## DaysUntilExpiry メトリクス
<a name="daysuntilexpiry-metric"></a>

AS2 用に証明書をインポートすると、Transfer Family は という CloudWatch メトリクスを自動的に作成します`DaysUntilExpiry`。このメトリクスは、証明書のインポート時に`InactiveDate`指定した に基づいて、証明書の有効期限が切れるまでの残り日数を追跡します。

**メトリクスの詳細：**
+ **メトリクス名：** `DaysUntilExpiry`
+ **名前空間：** `AWS/Transfer`
+ **ディメンション：** `CertificateId` (常に存在する）、 `Description` (証明書のインポート中に提供される場合）
+ **単位：** カウント (日）
+ **頻度：** 毎日公開

**重要**  
Transfer Family の証明書をインポートした後、アカウントにこのメトリクスが出力されるまでに最大 1 日かかる場合があります。

メトリクス値は、証明書が非アクティブな日付に近づくと、毎日 1 つずつ減少します。たとえば、証明書の有効期限が 30 日の場合、メトリクスには 30 と表示され、翌日には 29 と表示されます。

## 証明書モニタリングのベストプラクティス
<a name="certificate-monitoring-best-practices"></a>

証明書の有効期限のモニタリングを設定するときは、次のベストプラクティスに従ってください。
+ **複数のアラートしきい値を設定する：** 異なる期間 (有効期限の 30 日前、14 日前、7 日前など) のアラームを作成して、証明書の更新に十分な時間を確保します。
+ **適切な統計を使用する：** アラームの作成時に `Maximum` 統計を使用して、最新のメトリクス値をキャプチャします。
+ **適切なアラームアクションを設定する：** 通知を設定して、証明書を更新できる適切なチームメンバーに警告します。
+ **アラートをテストする：** 通知システムを定期的にテストして、アラートが適切に配信されていることを確認します。
+ **プロセスを文書化する：** 証明書の更新プロセスと、さまざまな証明書の責任者に関するドキュメントを維持します。

## アラーム設定の例
<a name="certificate-monitoring-examples"></a>

さまざまな通知シナリオのアラーム設定の例を次に示します。

### 30 日の有効期限の警告
<a name="thirty-day-warning"></a>

証明書の有効期限が 30 日以下の場合にトリガーするアラームを作成します。
+ **メトリクス：** DaysUntilExpiry
+ **統計: **Maximum
+ **期間：** 1 日
+ **しきい値：** 30
+ **比較：** しきい値以下
+ **欠落データ処理：** 欠落データを良好なものとして扱う (違反しない）

### 重要な 7 日間の有効期限警告
<a name="critical-warning"></a>

証明書の有効期限が 7 日以下の場合にトリガーする重要なアラームを作成します。
+ **メトリクス：** DaysUntilExpiry
+ **統計: **Maximum
+ **期間：** 1 日
+ **しきい値：** 7
+ **比較：** しきい値以下
+ **欠損データの処理：** 欠損データを良好なものとして扱う (違反しない）