事前定義されたステップを使用する - AWS Transfer Family

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

事前定義されたステップを使用する

ワークフローを作成する場合、このトピックで説明した以下の定義済みステップのいずれかを追加することを選択できます。独自のカスタムファイル処理ステップを追加することもできます。詳細については、「カスタムのファイル処理ステップを使用してください。」を参照してください。

ファイルをコピーする

ファイルのコピーステップでは、アップロードされたファイルのコピーを新しい Amazon S3 ロケーションに作成します。現在、ファイルコピーステップは Amazon S3 でのみ使用できます。

次のファイルコピーステップでは、ファイルをfile-test宛先バケットのtestフォルダにコピーします。

ファイルのコピーステップがワークフローの最初のステップでない場合は、「ファイルロケーション」を指定できます。ファイルの場所を指定することで、前のステップで使用したファイルまたはアップロードされた元のファイルのいずれかをコピーできます。この機能を使用すると、ファイルのアーカイブや記録の保持のためにソースファイルをそのまま保持したまま、元のファイルの複数のコピーを作成できます。例については、タグ付けと削除のワークフローの例を参照してください。

バケットとキーの詳細を提供する

ファイルのコピーステップのバケット名とキーを指定する必要があります。キーには、パス名またはファイル名を指定できます。キーがパス名またはファイル名のどちらとして扱われるかは、キーの末尾にスラッシュ (/) を付けるかどうかで決まります。

最後の文字が「/」の場合、ファイルはフォルダにコピーされ、その名前は変わりません。最後の文字が英数字の場合、アップロードしたファイルの名前が path 値に変更されます。その名前のファイルがすでに存在する場合、動作は「既存を上書き」フィールドの設定によって異なります。

  • 既存を上書き」を選択した場合、既存のファイルは処理中のファイルに置き換えられます。

  • 既存を上書き」が選択されていない場合は何も起こらず、ワークフロー処理は停止します。

    ヒント

    同じファイルパスで同時書き込みを実行すると、ファイルの上書き時に予期しない動作が発生する可能性があります。

たとえば、キー値が test/ であれば、アップロードされたファイルは test フォルダにコピーされます。キーの値が test/today で、「Overwrite existing」が選択されている場合、アップロードしたファイルはすべて test フォルダー内の today という名前のファイルにコピーされ、後続のファイルはそれぞれ前のファイルが上書きされます。

注記

Amazon S3 ではバケットとオブジェクトをサポートしており、階層はありません。しかし、オブジェクトキーの名前に接頭辞や区切り文字を使うことで、フォルダに似た方法で階層を暗示し、データを整理することができます。

ファイルのコピーステップでは名前付き変数を使用します。

ファイルのコピーステップでは、変数を使用してファイルをユーザー固有のフォルダーに動的にコピーできます。現在、${transfer:UserName}または${transfer:UploadDate}を変数として使用して、ファイルをアップロードしている特定のユーザーの宛先に、または現在の日付に基づいてファイルをコピーできます。

次の例では、ユーザーrichard-roeがファイルをアップロードすると、そのファイルはfile-test2/richard-roe/processed/フォルダーにコピーされます。ユーザーmary-majorがファイルをアップロードすると、そのファイルはfile-test2/mary-major/processed/フォルダーにコピーされます。

同様に、${transfer:UploadDate}を変数として使って、現在の日付にちなんだ名前のコピー先にファイルをコピーすることができます。次の例では、コピー先を 2022 年 2 月 1 日の${transfer:UploadDate}/processedに設定すると、アップロードされたファイルはfile-test2/2022-02-01/processed/フォルダーにコピーされます。

これらの変数は両方を組み合わせて使用することもできます。例:

  • 宛先キープレフィックス」をfolder/${transfer:UserName}/${transfer:UploadDate}/に設定すると、folder/marymajor/2023-01-05/のように、ネストされたフォルダが作成されます。

  • 宛先キープレフィックス」をfolder/${transfer:UserName}-${transfer:UploadDate}/にに設定すると、folder/marymajor-2023-01-05/のように、2 つの変数を連結できます。

コピーステップの IAM 権限

コピーステップを成功させるには、ワークフローの実行ロールに次の権限が含まれていることを確認してください。

{ "Sid": "ListBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::destination-bucket-name" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::destination-bucket-name/*" }
注記

s3:ListBucket権限は、「既存を上書き」を選択しない場合にのみ必要です。この権限は、バケットをチェックして、同じ名前のファイルがすでに存在するかどうかを確認します。「既存を上書き」を選択した場合、ワークフローはファイルを確認する必要はなく、書き込むだけで済みます。

Amazon S3 ファイルにタグがある場合は、IAM ポリシーに 1 つまたは 2 つのアクセス権限を追加する必要があります。

  • バージョン管理されていない Amazon S3 ファイルにs3:GetObjectTaggingを追加します。

  • バージョン管理されている Amazon S3 ファイルにs3:GetObjectVersionTaggingを追加します。

ファイルを復号化します。

AWS ストレージブログには、ファイルの暗号化と復号、PGP と を使用したファイルの暗号化と復号 AWS Transfer Family化の方法を説明する投稿があります。

PGP 復号化をワークフローで使用してください。

Transfer Family には完璧なプライバシー (PGP) 復号化のサポートが組み込まれています。SFTP、FTPS、またはFTP経由でAmazon Simple Storage Service(Amazon S3)またはAmazon Elastic File System(Amazon EFS)にアップロードされたファイルでPGP復号化を使用できます。

PGP 復号化を使用するには、ファイルの復号に使用する PGP プライベートキーを作成して保存する必要があります。ユーザーは、Transfer Familyサーバーにファイルをアップロードする前に、対応するPGP暗号鍵を使用してファイルを暗号化することができます。暗号化されたファイルを受信したら、ワークフローでそれらのファイルを復号化できます。詳細なチュートリアルについては、「ファイルを復号するための管理ワークフローの設定」を参照してください。

PGP 復号化をワークフローで使用するには
  1. ワークフローをホストする Transfer Family サーバーを特定するか、新しいサーバーを作成します。PGP キーを正しいシークレット名 AWS Secrets Manager で に保存する前に、サーバー ID が必要です。

  2. PGP キーを必要なシークレット名 AWS Secrets Manager で に保存します。詳細については、「キーペアを管理する」を参照してください。ワークフローは、Secrets Manager のシークレット名に基づいて、復号化に使用する正しいPGPキーを自動的に見つけることができます。

    注記

    Secrets Manager にシークレットを保存すると、 AWS アカウント に料金が発生します。料金については、「AWS Secrets Manager 料金表」を参照してください。

  3. PGP キーペアを使用してファイルを暗号化します。(対応クライアントのリストは サポートされている PGP クライアント を参照のこと)。コマンドラインを使用している場合は、以下のコマンドを実行します。このコマンドを使用するには、username@example.comをPGPキー・ペアの作成に使用した電子メール・アドレスに置き換えます。testfile.txt を暗号化したいファイル名に置き換えます。

    gpg -e -r username@example.com testfile.txt
  4. 暗号化されたファイルを Transfer Family サーバーにアップロードします。

  5. ワークフローで復号化ステップを設定します。詳細については、「復号ステップを追加する」を参照してください。

復号ステップを追加する

復号化ステップでは、ワークフローの一部として Amazon S3 または Amazon EFS にアップロードされた暗号化されたファイルを復号化します。復号化の設定の詳細については、PGP 復号化をワークフローで使用してください。 を参照してください。

ワークフローの復号化ステップを作成するときは、復号化されたファイルの保存先を指定する必要があります。また、宛先にファイルがすでに存在する場合、既存のファイルを上書きするかどうかも選択する必要があります。Amazon CloudWatch Logs を使用すると、復号ワークフローの結果をモニタリングし、各ファイルの監査ログをリアルタイムで取得できます。

ステップの「Decrypt ファイル」タイプを選択すると、「パラメータの設定」ページが表示されます。「PGP 復号化パラメーターの設定」セクションに値を入力します。

利用可能なオプションは以下の通りである:

  • ステップ名 — ステップの説明的な名前を入力します。

  • ファイルロケーション — ファイルの場所を指定することで、前のステップで使用したファイルまたはアップロードされた元のファイルのいずれかを復号化できます。

    注記

    このパラメータは、このステップがワークフローの最初のステップである場合は使用できません。

  • 復号化されたファイルの宛先 — 復号化されたファイルの宛先として Amazon S3 バケットまたは Amazon EFS ファイルシステムを選択します。

    • Amazon S3 を選択した場合、宛先バケット名と宛先キープレフィックスを指定する必要があります。宛先キープレフィックスをユーザー名でパラメータ化するには、「宛先キープレフィックス」に${transfer:UserName}と入力します。同様に、アップロード日ごとに宛先キープレフィックスをパラメータ化するには、「宛先キープレフィックス」に${Transfer:UploadDate}と入力します。

    • Amazon EFS を選択する場合は、デスティネーションファイルシステムとパスを指定する必要があります。

    注記

    ここで選択するストレージオプションは、このワークフローが関連するTransfer Family サーバが使用するストレージシステムと一致する必要があります。作成されていない場合は、このワークフローを実行しようとしたときにエラーが発生します。

  • 既存の上書き — ファイルをアップロードし、同じファイル名のファイルが宛先にすでに存在する場合、動作はこのパラメーターの設定によって異なります。

    • 既存を上書き」を選択した場合、既存のファイルは処理中のファイルに置き換えられます。

    • 既存を上書き」が選択されていない場合は何も起こらず、ワークフロー処理は停止します。

      ヒント

      同じファイルパスで同時書き込みを実行すると、ファイルの上書き時に予期しない動作が発生する可能性があります。

次のスクリーンショットは、ファイルの復号化ステップで選択できるオプションの例を示しています。


                     AWS Transfer Family コンソールで、PGP 復号パラメータの設定セクションにサンプル値が表示されます。

復号化ステップの IAM 権限

復号化ステップを成功させるには、ワークフローの実行ロールに次の権限が含まれていることを確認してください。

{ "Sid": "ListBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::destination-bucket-name" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::destination-bucket-name/*" }, { "Sid": "Decrypt", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/*" }
注記

s3:ListBucket権限は、「既存を上書き」を選択しない場合にのみ必要です。この権限は、バケットをチェックして、同じ名前のファイルがすでに存在するかどうかを確認します。「既存を上書き」を選択した場合、ワークフローはファイルを確認する必要はなく、書き込むだけで済みます。

Amazon S3 ファイルにタグがある場合は、IAM ポリシーに 1 つまたは 2 つのアクセス権限を追加する必要があります。

  • バージョン管理されていない Amazon S3 ファイルにs3:GetObjectTaggingを追加します。

  • バージョン管理されている Amazon S3 ファイルにs3:GetObjectVersionTaggingを追加します。

タグファイル

受信ファイルにタグを付けてさらに下流処理を行うには、タグステップを使用します。受信ファイルに割り当てるタグの値を入力します。現在、タグオペレーションは Transfer Family サーバーストレージに Amazon S3 を使用している場合にのみサポートされます。

次のタグステップ例では、scan_outcomecleanをそれぞれタグキーと値として割り当てます。

タグステップを成功させるには、ワークフローの実行ロールに次の権限が含まれていることを確認してください。

{ "Sid": "Tag", "Effect": "Allow", "Action": [ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] }
注記

ワークフローに、コピーまたは復号化ステップの前に実行されるタグステップが含まれている場合は、IAM ポリシーに 1 つまたは 2 つのアクセス権限を追加する必要があります。

  • バージョン管理されていない Amazon S3 ファイルにs3:GetObjectTaggingを追加します。

  • バージョン管理されている Amazon S3 ファイルにs3:GetObjectVersionTaggingを追加します。

ファイルを削除する

処理済みのファイルを前のワークフローステップから削除したり、最初にアップロードしたファイルを削除したりするには、ファイル削除ステップを使用します。

削除ステップを正常に実行するには、ワークフローの実行ロールに次の権限が含まれていることを確認してください。

{ "Sid": "Delete", "Effect": "Allow", "Action": [ "s3:DeleteObjectVersion", "s3:DeleteObject" ], "Resource": "arn:aws:secretsmanager:region:account-ID:secret:aws/transfer/*" }

ワークフローの名前付き変数

コピーと復号化のステップでは、変数を使用してアクションを動的に実行できます。現在、 は、次の名前付き変数 AWS Transfer Family をサポートしています。

  • ${transfer:UserName}を使用して、ファイルをアップロードしているユーザーに基づいて、ファイルを宛先にコピーまたは復号化します。

  • ${transfer:UploadDate}を使用して、現在の日付に基づいて、ファイルを宛先にロケーションにコピーまたは復号化します。

タグ付けと削除のワークフローの例

次の例は、データ分析プラットフォームなどのダウンストリームアプリケーションで処理する必要がある受信ファイルにタグを付けるワークフローを示しています。受信ファイルにタグを付けた後、ワークフローはストレージコストを節約するために最初にアップロードされたファイルを削除します。

Console
例:タグ付けして移動するワークフロー
  1. https://console.aws.amazon.com/transfer/ で AWS Transfer Family コンソールを開きます。

  2. ナビゲーションペインで [Workflows] (ワークフロー) を選択します。

  3. [Workflows] (ワークフロー) ページで [Create workflow] (ワークフローの作成) を選択します。

  4. ワークフローの作成」ページで、説明を入力します。この説明は [Workflows] (ワークフロー) ページに表示されます。

  5. 最初のステップ (コピー) を追加します。

    1. ノミナルステップ」セクションで「ステップを追加」を選択します。

    2. ファイルのコピー」を選択し、「次へ」を選択します。

    3. ステップ名を入力し、宛先バケットとkey prefix スを選択します。

    4. [Next] (次へ) を選択してからステップの詳細を見直します。

    5. ステップの作成」を選択してステップを追加し、次に進みます。

  6. 2 番目のステップ (タグ) を追加します。

    1. ノミナルステップ」セクションで「ステップを追加」を選択します。

    2. ファイルのタグ付け」を選択し、「次へ」を選択します。

    3. ステップ名を入力します。

    4. ファイルロケーション」で、「前の手順で作成したファイルにタグを付ける」を選択します。

    5. [Key] (キー) と [Value] (値) を入力します。

    6. [Next] (次へ) を選択してからステップの詳細を見直します。

    7. ステップの作成」を選択してステップを追加し、次に進みます。

  7. 3 番目のステップ (削除) を追加します。

    1. ノミナルステップ」セクションで「ステップを追加」を選択します。

    2. ファイルの削除」を選択し、「次へ」を選択します。

    3. ステップ名を入力します。

    4. ファイルロケーション」で「元のソースファイルを削除」を選択します。

    5. [Next] (次へ) を選択してからステップの詳細を見直します。

    6. ステップの作成」を選択してステップを追加し、次に進みます。

  8. ワークフロー設定を確認し、し、「ワークフローの作成」を選択します。

CLI
例:タグ付けして移動するワークフロー
  1. 以下のコードをファイルに保存します;例えば、tagAndMoveWorkflow.jsonuser input placeholder を、ユーザー自身の情報に置き換えます。

    [ { "Type": "COPY", "CopyStepDetails": { "Name": "CopyStep", "DestinationFileLocation": { "S3FileLocation": { "Bucket": "DOC-EXAMPLE-BUCKET", "Key": "test/" } } } }, { "Type": "TAG", "TagStepDetails": { "Name": "TagStep", "Tags": [ { "Key": "name", "Value": "demo" } ], "SourceFileLocation": "${previous.file}" } }, { "Type": "DELETE", "DeleteStepDetails":{ "Name":"DeleteStep", "SourceFileLocation": "${original.file}" } } ]

    最初のステップでは、アップロードしたファイルを新しい Amazon S3 ロケーションにコピーします。2 番目のステップでは、新しいロケーションにコピーされたファイル (previous.file) にタグ (キーと値のペア) を追加します。最後に、3 番目のステップで元のファイル (original.file) を削除します。

  2. 保存したファイルからワークフローを作成します。user input placeholder を、ユーザー自身の情報に置き換えます。

    aws transfer create-workflow --description "short-description" --steps file://path-to-file --region region-ID

    例:

    aws transfer create-workflow --description "copy-tag-delete workflow" --steps file://tagAndMoveWorkflow.json --region us-east-1
    注記

    ファイルを使用してパラメータを読み込む方法について詳しくは、「ファイルからパラメータをロードする方法」を参照してください。

  3. 既存のサーバーを更新します。

    注記

    この手順では、すでに Transfer Family サーバーがあり、それにワークフローを関連付けることを前提としています。そうでない場合は、「SFTP、FTPS、または FTP サーバーエンドポイントの設定」を参照してください。user input placeholder を、ユーザー自身の情報に置き換えます。

    aws transfer update-server --server-id server-ID --region region-ID --workflow-details '{"OnUpload":[{ "WorkflowId": "workflow-ID","ExecutionRole": "execution-role-ARN"}]}'

    例:

    aws transfer update-server --server-id s-1234567890abcdef0 --region us-east-2 --workflow-details '{"OnUpload":[{ "WorkflowId": "w-abcdef01234567890","ExecutionRole": "arn:aws:iam::111111111111:role/nikki-wolf-execution-role"}]}'