翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon API Gateway メソッドをカスタム ID プロバイダーとして設定する
このチュートリアルでは、Amazon API Gateway メソッドをセットアップし、それをカスタム ID プロバイダーとして使用して AWS Transfer Family サーバーにファイルをアップロードする方法について説明します。このチュートリアルでは、「基本スタックテンプレート
トピック
前提条件
で Transfer Family リソースを作成する前に AWS CloudFormation、ストレージとユーザーロールを作成します。
ストレージを指定してユーザーの役割を作成する
使用しているストレージに応じて、次のドキュメントを参照してください。
Amazon S3 バケットを作成するには、Amazon Simple Storage Service ユーザーガイドの「S3 バケットを作成するには?」を参照してください。
-
Amazon EFS ファイルシステムを作成するには、「」を参照してくださいAmazon EFS ファイルシステムを設定する。
-
ユーザーロールを作成するには、IAM ロールとポリシーを作成する を参照してください
AWS CloudFormation 次のセクションで スタックを作成する際に、ストレージとユーザーの役割の詳細を入力します。
ステップ 1: CloudFormation スタックを作成する
提供されたテンプレートから AWS CloudFormation スタックを作成するには
AWS CloudFormation コンソールを https://console.aws.amazon.com/cloudformation
で開きます。 -
[Create stack] (スタックの作成) を選択し、[With new resources (standard)] (新しいリソースを使用 (標準)) を選択します。
-
[Prerequisite - Prepare template] (前提条件 - テンプレートを準備する) ペインで [Template is ready] (テンプレートの準備完了) を選択します。
-
このリンク、ベーシックスタックテンプレート
をコピーし、Amazon S3 URLフィールドに貼り付けます。 -
[Next] (次へ) をクリックします。
-
スタックの名前を含めてパラメータを指定します。必ず以下のことをしてください。
UserName と のデフォルト値を置き換えますUserPassword。
-
にはUserHomeDirectory、以前に作成したストレージ (Amazon S3 バケットまたは Amazon EFS ファイルシステム) の詳細を入力します。
-
デフォルトを、以前に作成したユーザーロールUserRoleArnに置き換えます。 AWS Identity and Access Management (IAM) ロールには適切なアクセス許可が必要です。IAM ロールとバケットポリシーの例については、「」を参照してくださいステップ 6: バケットへのアクセスを制限する。
-
パスワードの代わりにパブリックキーを使用して認証する場合は、UserPublicKey1 フィールドにパブリックキーを入力します。を使用してサーバーに初めて接続するときはSFTP、パスワードの代わりにプライベートキーを指定します。
-
[Next] (次へ) を選択してから [Configure stack options] (スタックオプションの設定) ページでもう一度 [Next] (次へ) をクリックします。
-
作成しようとするスタックの詳細を確認してから [Create stack] (スタックの作成) を選択します。
注記
ページの下部の 機能 で、 が AWS CloudFormation IAMリソースを作成する可能性があることを確認する必要があります。
ステップ 2: サーバーの API Gateway メソッド設定を確認する
注記
セキュリティを向上させるために、ウェブアプリケーションファイアウォールを設定できます。 AWS WAF は、Amazon API Gateway に転送される HTTPおよび HTTPSリクエストをモニタリングできるウェブアプリケーションファイアウォールです。詳細については、「ウェブアプリケーションファイアウォールを追加する」を参照してください。
サーバーの API Gateway メソッド設定を確認してデプロイするには
-
で API Gateway コンソールを開きますhttps://console.aws.amazon.com/apigateway/
。 -
テンプレートが生成した Transfer Custom Identity Provider の基本API AWS CloudFormation テンプレートを選択します。
-
リソースペインで、 を選択しGET、メソッドリクエスト を選択します。
-
アクション で、デプロイ APIを選択します。[Deplyment stage] (デプロイステージ) で [prod] を選択してから [Deploy] (デプロイ) を選択します。
API Gateway メソッドが正常にデプロイされたら、ステージエディタセクションでそのパフォーマンスを表示します。
注記
ページの上部に表示される呼び出しURLアドレスをコピーします。次のステップで必要になります。
ステップ 3: Transfer Family サーバーの詳細を表示する
テンプレートを使用して AWS CloudFormation スタックを作成すると、Transfer Family サーバーが自動的に作成されます。
Transfer Family サーバーの詳細を表示するには
AWS CloudFormation コンソールを https://console.aws.amazon.com/cloudformation
で開きます。 作成したスタックを選択します。
[リソース] タブを選択します。
サーバーARNは、TransferServer行の物理 ID 列に表示されます。サーバー ID は、s-11112222333344445 などARN、 に含まれています。
で AWS Transfer Family コンソールを開きhttps://console.aws.amazon.com/transfer/
、サーバーページで新しいサーバーを選択します。 サーバー ID は、 のTransferServerリソースに表示される ID と一致します AWS CloudFormation。
ステップ 4: ユーザーがサーバーに接続できることを確認する
Transfer Family コンソールを使用して、ユーザーがサーバーに接続できるかどうかをテストするには
で AWS Transfer Family コンソールを開きますhttps://console.aws.amazon.com/transfer/
。 -
[Servers] (サーバー) ページで新しいサーバーを選択し、[Actions] (アクション) を選択してから [Test] (テスト) を選択します。
-
サインイン資格情報のテキストを[ユーザー名] フィールドと[パスワード] フィールドに入力します。これらは、 AWS CloudFormation スタックをデプロイしたときに設定した値です。
-
サーバープロトコル で を選択しSFTP、ソース IP で と入力します
127.0.0.1
。 -
[テスト] を選択します。
ユーザー認証が成功すると、テストは
StatusCode: 200
HTMLレスポンスと、ユーザーのロールとアクセス許可の詳細を含むJSONオブジェクトを返します。例:{ "Response": "{\"Role\": \"arn:aws:iam::
123456789012
:role/my-user-role
\",\"HomeDirectory\": \"/${transfer:HomeBucket}/\"}", "StatusCode": 200, "Message": "", "Url": "https://1a2b3c4d5e
.execute-api.us-east-2
.amazonaws.com/prod/servers/s-1234abcd5678efgh0
/users/myuser
/config" }テストが失敗した場合は、APIゲートウェイ AWS 管理ポリシーの 1 つを、 に使用しているロールに追加しますAPI。
ステップ 5: SFTP接続とファイル転送をテストする
SFTP 接続をテストするには
-
Linux または macOS の場合、コマンドターミナルを開きます。
-
認証にパスワードまたはキーペアのどちらを使用すかに応じて、次のいずれかのコマンドを入力します。
-
パスワードを使用する場合、このコマンドを入力します。
sftp -o PubkeyAuthentication=no
myuser
@server-ID
.server.transfer.region-code
.amazonaws.comプロンプトが表示されたら、パスワードを入力します。
-
キーペアを使用する場合、このコマンドを入力します。
sftp -i
private-key-file
myuser
@server-ID
.server.transfer.region-code
.amazonaws.com
注記
これらの
sftp
コマンドには、Transfer Family サーバーが置かれている AWS リージョン のコードを挿入します。たとえば、サーバーが米国東部 (オハイオ) にあるならば「us-east-2
」を入力します。 -
-
sftp>
プロンプトで、ディレクトリとファイル (pwd
とls
) をアップロード (put
)、ダウンロード (get
)、および表示できることを確認します。
ステップ 6: バケットへのアクセスを制限する
特定の Amazon S3 バケットにアクセスできるユーザーを制限できます。次の例は、 CloudFormation スタックおよびユーザー用に選択したポリシーで使用する設定を示しています。
この例では、 AWS CloudFormation スタックに次のパラメータを設定します。
CreateServer:
true
UserHomeDirectory:
/myuser-bucket
UserName:
myuser
UserPassword:
MySuperSecretPassword
重要
これはパスワードの例です。API Gateway メソッドを設定するときは、必ず強力なパスワードを入力してください。
UserPublicKey1:
your-public-key
UserRoleArn:
arn:aws:iam::
role-id
:role/myuser-api-gateway-role
UserPublicKey1 は、パブリック/プライベートキーペアの一部として生成したパブリックキーです。
は、作成するユーザーロールに固有です。role-id
myuser-api-gateway-role
にアタッチされるポリシーは次のとおりです。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::myuser-bucket" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:PutObjectAcl", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::myuser-bucket/*" } ] }
を使用してサーバーに接続するにはSFTP、プロンプトに次のいずれかのコマンドを入力します。
パスワードで認証する場合、次のコマンドを実行します。
sftp -o PubkeyAuthentication=no
myuser
@transfer-server-ID
.server.transfer.region-id
.amazonaws.comプロンプトが表示されたら、パスワードを入力します。
-
キーペアで認証する場合、次のコマンドを実行します。
sftp -i
private-key-file
myuser@transfer-server-ID
.server.transfer.region-id
.amazonaws.com
注記
これらのsftp
コマンドには、Transfer Family サーバー AWS リージョン がある の ID を使用します。たとえば、サーバーが米国東部 (オハイオ) にあるならば「us-east-2
」を使用します。
sftp
プロンプトで、ホームディレクトリに誘導され、pwd
コマンドを実行することによってそれを表示できます。例:
sftp> pwd Remote working directory: /myuser-bucket
ユーザーは、ホームディレクトリよりも上位のディレクトリを表示できません。例:
sftp> pwd Remote working directory: /myuser-bucket sftp> cd .. sftp> ls Couldn't read directory: Permission denied
Amazon を使用している場合は Lambda を更新する EFS
Transfer Family サーバーのストレージオプションEFSとして Amazon を選択した場合は、スタックの Lambda 関数を編集する必要があります。
Lambda 関数に Posix プロファイルを追加するには
で Lambda コンソールを開きますhttps://console.aws.amazon.com/lambda/
。 -
先ほど作成した Lambda 関数を選択します。Lambda 関数の形式は です。
stack-name
-GetUserConfigLambda-lambda-identifier
、ここでstack-name
は CloudFormation スタック名で、lambda-identifier
は関数の識別子です。 -
[Code] (コード) タブで index.js を選択して関数のコードを表示します。
-
response
でPolicy
とHomeDirectory
の間に次の行を追加します。PosixProfile: {"Uid":
uid-value
, "Gid":gid-value
},ここで、
uid-value
また、gid-value
は、それぞれユーザー ID とグループ ID を表す 0 以上の整数です。たとえば、Posix プロファイルを追加すると、レスポンスフィールドは次のようになります。
response = { Role: 'arn:aws:iam::123456789012:role/api-gateway-transfer-efs-role', // The user will be authenticated if and only if the Role field is not blank Policy: '', // Optional JSON blob to further restrict this user's permissions PosixProfile: {"Gid": 65534, "Uid": 65534}, HomeDirectory: '/fs-fab2c234' // Not required, defaults to '/' };