翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SFTP コネクタのセットアップと使用
コネクタの目的は、 AWS ストレージとパートナーのSFTPサーバーとの関係を確立することです。Amazon S3 からパートナーが所有する外部の宛先にファイルを送信できます。SFTP コネクタを使用して、パートナーのSFTPサーバーからファイルを取得することもできます。
このチュートリアルでは、SFTPコネクタをセットアップし、Amazon S3 ストレージとSFTPサーバー間でファイルを転送する方法について説明します。
SFTP コネクタは からSFTP認証情報を取得し AWS Secrets Manager 、リモートSFTPサーバーに認証して接続を確立します。コネクタは、リモートサーバーにファイルを送信または取得し、Amazon S3 にファイルを保存します。IAM ロールは、Amazon S3 バケットと Secrets Manager に保存されている認証情報へのアクセスを許可するために使用されます。また、Amazon にログインすることもできます CloudWatch。

トピック
ステップ 1: 必要なサポートリソースを作成する
SFTP コネクタを使用して、Amazon S3 と任意のリモートSFTPサーバー間でファイルをコピーできます。このチュートリアルでは、リモート AWS Transfer Family サーバーとしてSFTPサーバーを使用しています。次のリソースを作成して設定する必要があります。
-
Amazon S3 バケットを作成して、 AWS 環境にファイルを保存し、リモートSFTPサーバーからファイルを送信および取得します。 Amazon S3 バケットを作成する
-
Secrets Manager で Amazon S3 ストレージとシークレットにアクセスするための AWS Identity and Access Management ロールを作成します。 必要なアクセス許可を持つIAMロールを作成する
-
SFTP プロトコルを使用する Transfer Family サーバーと、SFTPコネクタを使用してSFTPサーバーとの間でファイルを転送するサービスマネージドユーザーを作成します。 Transfer Family SFTPサーバーとユーザーを作成する
-
SFTP コネクタがリモートSFTPサーバーにログインするために使用する認証情報を保存する AWS Secrets Manager シークレットを作成します。 シークレットを作成して保存する AWS Secrets Manager
Amazon S3 バケットを作成する
Amazon S3 バケットを作成するには
-
で AWS Transfer Family コンソールにサインインしますhttps://console.aws.amazon.com/s3/
。 -
リージョンを選択し、名前を入力します。
このチュートリアルでは、バケットは にあり
US East (N. Virginia) us-east-1
、名前は ですsftp-server-storage-east
。 -
デフォルトを受け入れ、 バケットの作成 を選択します。
Amazon S3 バケットの作成の詳細については、「Amazon Simple Storage Service ユーザーガイド」のS3 バケットの作成方法」を参照してください。
必要なアクセス許可を持つIAMロールを作成する
アクセスロールには、次のアクセス許可を持つポリシーを作成します。
次の例では、 にアクセスするために必要なアクセス許可を付与します。DOC-EXAMPLE-BUCKET
Amazon S3、および Secrets Manager に保存されている指定されたシークレット。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:region
:account-id
:secret:aws/transfer/SecretName-6RandomCharacters
" } ] }
次のように項目を置き換えます。
-
[
DOC-EXAMPLE-BUCKET
、チュートリアルでは を使用しますs3-storage-east
。 -
[
region
、チュートリアルでは を使用しますus-east-1
。 -
[
account-id
、ID を使用します AWS アカウント 。 -
[
SecretName-6RandomCharacters
、名前using sftp-connector1
は です (シークレットには独自の 6 つのランダムな文字があります)。
また、このロールに、ユーザーの転送リクエストを処理するときにコネクタがリソースにアクセスできるようにする信頼関係が含まれていることを確認する必要があります。信頼関係の確立の詳細については、信頼関係を確立するには を参照してください。
注記
チュートリアルで使用しているロールの詳細については、「」を参照してくださいユーザーロールとアクセスロールの組み合わせ。
シークレットを作成して保存する AWS Secrets Manager
SFTP コネクタのユーザー認証情報を保存するには、Secrets Manager にシークレットを保存する必要があります。パスワード、SSHプライベートキー、またはその両方を使用できます。チュートリアルでは、プライベートキーを使用しています。
注記
Secrets Manager にシークレットを保存すると、 AWS アカウント に料金が発生します。料金については、「AWS Secrets Manager 料金表
シークレットを保存する手順を開始する前に、プライベートキーを取得してフォーマットします。プライベートキーは、リモートSFTPサーバー上のユーザー用に設定されたパブリックキーに対応する必要があります。チュートリアルでは、プライベートキーは、リモートサーバーとして使用している Transfer Family SFTPサーバーにテストユーザー用に保存されているパブリックキーに対応する必要があります。
これを行うには、次のコマンドを実行します。
jq -sR .
path-to-private-key-file
例えば、プライベートキーファイルが にある場合~/.ssh/sftp-testuser-privatekey
、 コマンドは次のようになります。
jq -sR . ~/.ssh/sftp-testuser-privatekey
これにより、キーが正しい形式 (改行文字が埋め込まれている) で標準出力に出力されます。このテキストは、次の手順 (ステップ 6) で貼り付ける必要があるため、どこかにコピーします。
SFTP コネクタの Secrets Manager にユーザー認証情報を保存するには
-
にサインイン AWS Management Console し、 で AWS Secrets Manager コンソールを開きますhttps://console.aws.amazon.com/secretsmanager/
。 -
左側のナビゲーションペインで [サーバー] を選択します。
-
[シークレット]ページで、[新しいシークレットの保存]を選択します。
-
[シークレットタイプの選択] ページの[シークレットタイプ] で[その他のシークレットタイプ] を選択します。
-
[キー/値のペア] セクションで、[キー/値] タブを選択します。
-
キー —
Username
と入力します。 -
value – ユーザーの名前を入力します
sftp-testuser
。
-
-
キーを入力するには、プレーンテキストタブを使用することをお勧めします。
-
行の追加 を選択し、 を入力します
PrivateKey
。 -
[プレーンテキスト] タブを選択します。フィールドには、次のテキストが含まれるようになりました。
{"Username":"sftp-testuser","PrivateKey":""}
-
空の二重引用符 (「」) の間にプライベートキー (以前に保存) のテキストを貼り付けます。
画面は次のようになります (キーデータはグレー表示されます)。
-
-
[Next (次へ)] を選択します。
-
シークレットの設定ページで、シークレットの名前を入力します。このチュートリアルでは、シークレット に名前を付けます
aws/transfer/sftp-connector1
。 -
[次へ] を選択し、[ローテーションの設定] ページのデフォルトを受け入れます。次いで、[次へ] を選択します。
-
[レビュー] ページで [ストア] を選択し、シークレットを作成して保存します。
ステップ 2: SFTP コネクタを作成してテストする
このセクションでは、前に作成したすべてのリソースを使用するSFTPコネクタを作成します。詳細については、「SFTP コネクタの設定」を参照してください。
SFTP コネクタを作成するには
-
で AWS Transfer Family コンソールを開きますhttps://console.aws.amazon.com/transfer/
。 -
左側のナビゲーションペインで、[コネクタ] を選択し、[コネクタの作成] を選択します。
-
SFTP コネクタタイプを選択してSFTPコネクタを作成し、次へ を選択します。
-
[コネクタ構成] セクションで、次の情報を入力します。
-
にURL、URLリモートSFTPサーバーの を入力します。このチュートリアルでは、リモートサーバーとして使用している URL Transfer Family SFTPサーバーの を入力します。
sftp://s-
1111aaaa2222bbbb3
.server.transfer.us-east-1.amazonaws.com置換
1111aaaa2222bbbb3
Transfer Family サーバー ID を使用します。 -
アクセスロール には、前に作成したロール を入力します
sftp-connector-role
。 -
ログ記録ロール で、 を選択します
AWSTransferLoggingAccess
。注記
AWSTransferLoggingAccess は AWS マネージドポリシーです。このポリシーの詳細については、「」を参照してくださいAWS マネージドポリシー: AWSTransferLoggingAccess。
-
-
SFTP 設定 セクションで、次の情報を指定します。
-
Connector 認証情報 では、SFTP認証情報を含む Secrets Manager リソースの名前を選択します。チュートリアルでは、 を選択します
aws/transfer/sftp-connector1
。 -
信頼されたホストキー の場合、ホストキーのパブリック部分に貼り付けます。このキーを取得するには、 SFTP サーバー
ssh-keyscan
で を実行します。信頼できるホストキーをフォーマットして保存する方法については、「」を参照してください。 SftpConnectorConfig データ型ドキュメント。
-
-
すべての設定を確認したら、コネクタの作成を選択してSFTPコネクタを作成します。
SFTP コネクタを作成したら、新しいコネクタを使用してファイルを転送する前に、それをテストすることをお勧めします。
ステップ 3: SFTP コネクタを使用してファイルを送信および取得する
簡単にするために、Amazon S3 バケットにファイルがすでにあることを前提としています。
注記
このチュートリアルでは、送信元と送信先の両方のストレージロケーションに Amazon S3 バケットを使用しています。SFTP サーバーが Amazon S3 ストレージを使用しない場合、次のコマンドsftp-server-storage-east
で表示される場所であれば、パスをSFTPサーバーからアクセスできるファイルの場所へのパスに置き換えることができます。
-
Amazon S3 ストレージ
SEND-to-SERVER.txt
から という名前のファイルをSFTPサーバーに送信します。 -
SFTP サーバー
RETRIEVE-to-S3.txt
から Amazon S3 ストレージに という名前のファイルを取得します。
注記
次のコマンドで、 を置き換えます。connector-id
コネクタ ID を使用します。
まず、Amazon S3 バケットからリモートSFTPサーバーにファイルを送信します。コマンドプロンプトから、次のコマンドを実行します。
aws transfer start-file-transfer --connector-id c-
connector-id
--send-file-paths "/s3-storage-east/SEND-to-SERVER.txt" / --remote-directory-path "/sftp-server-storage-east/incoming"
これで、sftp-server-storage-east
バケットは次のようになります。

ファイルが期待どおりに表示されない場合は、 CloudWatch ログを確認してください。
CloudWatch ログを確認するには
-
で Amazon CloudWatch コンソールを開きます。 https://console.aws.amazon.com/cloudwatch/
-
左側のナビゲーションメニューからロググループを選択します。
-
検索バーにコネクタ ID を入力して、ログを検索します。
-
検索から返されるログストリームを選択します。
-
最新のログエントリを展開します。
成功すると、ログエントリは次のようになります。
{ "operation": "SEND", "timestamp": "2023-12-18T15:26:57.346283Z", "connector-id": "
connector-id
", "transfer-id": "transfer-id
", "file-transfer-id": "transfer-id
/file-transfer-id
", "url": "sftp://server-id
.server.transfer.us-east-1.amazonaws.com", "file-path": "/s3-storage-east/SEND-to-SERVER.txt", "status-code": "COMPLETED", "start-time": "2023-12-18T15:26:56.915864Z", "end-time": "2023-12-18T15:26:57.298122Z", "account-id": "500655546075", "connector-arn": "arn:aws:transfer:us-east-1:500655546075:connector/connector-id
", "remote-directory-path": "/sftp-server-storage-east/incoming" }
ファイル転送が失敗した場合、ログエントリには問題を指定するエラーメッセージが含まれます。エラーの一般的な原因は、IAMアクセス許可の問題と誤ったファイルパスです。
次に、SFTPサーバーから Amazon S3 バケットにファイルを取得します。コマンドプロンプトから、次のコマンドを実行します。
aws transfer start-file-transfer --connector-id c-
connector-id
--retrieve-file-paths "/sftp-server-storage-east/RETRIEVE-to-S3.txt" --local-directory-path "/s3-storage-east/incoming"
転送が成功すると、Amazon S3 バケットには、ここに示すように転送されたファイルが含まれます。

成功すると、ログエントリは次のようになります。
{ "operation": "RETRIEVE", "timestamp": "2023-12-18T15:36:40.017800Z", "connector-id": "c-
connector-id
", "transfer-id": "transfer-id
", "file-transfer-id": "transfer-id
/file-transfer-id
", "url": "sftp://s-server-id
.server.transfer.us-east-1.amazonaws.com", "file-path": "/sftp-server-storage-east/RETRIEVE-to-S3.txt", "status-code": "COMPLETED", "start-time": "2023-12-18T15:36:39.727626Z", "end-time": "2023-12-18T15:36:39.895726Z", "account-id": "500655546075", "connector-arn": "arn:aws:transfer:us-east-1:500655546075:connector/c-connector-id
", "local-directory-path": "/s3-storage-east/incoming" }
リモートサーバーとして使用する Transfer Family SFTPサーバーを作成する手順
以下に、このチュートリアルのリモートサーバーとして機能する Transfer Family SFTPサーバーを作成する手順の概要を示します。次の点に注意してください。
-
Transfer Family サーバーを使用してリモートSFTPサーバーを表します。一般的なSFTPコネクタユーザーには、独自のリモートSFTPサーバーがあります。「Transfer Family SFTPサーバーとユーザーを作成する」を参照してください。
-
Transfer Family サーバーを使用しているため、サービスマネージドSFTPユーザーも使用しています。また、簡単にするために、このユーザーが Transfer Family サーバーにアクセスするために必要なアクセス許可を、コネクタを使用するために必要なアクセス許可と組み合わせました。繰り返しになりますが、ほとんどのSFTPコネクタユースケースには、Transfer Family サーバーに関連付けられていない別のSFTPユーザーがあります。「Transfer Family SFTPサーバーとユーザーを作成する」を参照してください。
-
チュートリアルでは、リモートSFTPサーバーに Amazon S3 ストレージを使用しているため、あるバケットから別のバケットにファイルを転送できるように
s3-storage-east
、2 番目のバケット を作成する必要があります。
Transfer Family SFTPサーバーとユーザーを作成する
ほとんどのユーザーは、既にユーザーを持つSFTPサーバーがあり、このサーバーを使用してファイルを送受信できるため、Transfer Family SFTPサーバーとユーザーを作成する必要はありません。ただし、このチュートリアルでは、簡単にするために、Transfer Family サーバーを使用してリモートSFTPサーバーとして機能します。
で説明されている手順に従ってサーバーSFTP対応サーバーを作成するを作成し、ユーザーステップ 3: サービスマネージドユーザーを追加するを追加します。チュートリアルで使用しているユーザーの詳細は次のとおりです。
-
サービスマネージドユーザー を作成します
sftp-testuser
。-
ホームディレクトリを に設定する
/sftp-server-storage-east/sftp-testuser
-
ユーザーを作成するときは、パブリックキーを保存します。その後、Secrets Manager でシークレットを作成するときは、対応するプライベートキーを指定する必要があります。
-
-
ロール:
sftp-connector-role
。チュートリアルでは、SFTPユーザーとSFTPコネクタの両方に同じIAMロールを使用しています。組織のコネクタを作成する場合、ユーザーロールとアクセスロールがそれぞれ異なる場合があります。 -
サーバーホストキー: コネクタを作成するときは、サーバーホストキーを使用する必要があります。このキーを取得するには、 サーバー
ssh-keyscan
で を実行します。例えば、サーバー ID が でs-1111aaaa2222bbbb3
、エンドポイントが の場合us-east-1
、次のコマンドはサーバーホストキーを取得します。ssh-keyscan s-1111aaaa2222bbbb3.server.transfer.us-east-1.amazonaws.com
ステップ 2: SFTP コネクタを作成してテストする プロシージャに貼り付ける必要があるため、このテキストをどこかにコピーします。
ユーザーロールとアクセスロールの組み合わせ
チュートリアルでは、単一の複合ロールを使用しています。このロールは、SFTPユーザーとコネクタへのアクセスの両方に使用されます。次の例では、チュートリアルのタスクを実行する場合に備えて、このロールの詳細を示します。
次の例では、Amazon S3 の 2 つのバケットにアクセスするために必要なアクセス許可と、Secrets Manager に保存aws/transfer/sftp-connector1
されている という名前のシークレットを付与します。このチュートリアルでは、このロールの名前は ですsftp-connector-role
。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::sftp-server-storage-east", "arn:aws:s3:::s3-storage-east" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": [ "arn:aws:s3:::sftp-server-storage-east/*", "arn:aws:s3:::s3-storage-east/*" ] }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:us-east-1:500655546075:secret:aws/transfer/sftp-connector1-
6RandomCharacters
" } ] }
Transfer Family のロールの作成の詳細については、「」で説明されている手順に従ってロールユーザーロールの作成を作成します。