AWS Transfer Family サーバーエンドポイントタイプを VPC_ENDPOINT から に更新する VPC - AWS Transfer Family

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

AWS Transfer Family サーバーエンドポイントタイプを VPC_ENDPOINT から に更新する VPC

AWS Management Console、 AWS CloudFormation、または Transfer Family を使用して、サーバーの APIを EndpointTypeから VPC_ENDPOINTに更新できますVPC。以下のセクションでは、これらの各メソッドを使用してサーバーエンドポイントタイプを更新するための詳細な手順と例について説明します。複数の AWS リージョンと複数の AWS アカウントにサーバーがある場合は、以下のセクションで提供されているサンプルスクリプトを、変更を加えて使用して、更新する必要があるVPC_ENDPOINTタイプを使用してサーバーを識別できます。

VPC_ENDPOINT エンドポイントタイプを使用したサーバーの識別

AWS Management Consoleを使用することで、どのサーバーで VPC_ENDPOINT を使用しているかを特定できます。

VPC_ENDPOINT エンドポイントタイプを使用するサーバーをコンソールで識別するには
  1. で AWS Transfer Family コンソールを開きますhttps://console.aws.amazon.com/transfer/

  2. ナビゲーションペインの [Servers] (サーバー) で、そのリージョンのアカウント内のサーバーの一覧を表示します。

  3. [Endpoint type] (エンドポイントタイプ) を使用してサーバーのリストを並べ替えると、VPC_ENDPOINT を使用してすべてのサーバーを見ることができます。

複数の AWS リージョンとアカウントVPC_ENDPOINTで を使用してサーバーを識別するには

複数の AWS リージョンと複数の AWS アカウントにサーバーがある場合は、次のサンプルスクリプトを変更して使用して、VPC_ENDPOINTエンドポイントタイプを使用してサーバーを識別できます。この例では、Amazon EC2DescribeRegionsと Transfer Family のListServersAPI呼び出しを使用して、 を使用するすべてのサーバーのサーバーIDsとリージョンのリストを取得しますVPC_ENDPOINT。 AWS アカウントが多数ある場合は、ID プロバイダーへのセッションプロファイルを使用して認証する場合、読み取り専用の監査アクセスを持つIAMロールを使用してアカウントをループスルーできます。

  1. 以下に単純な例を示します。

    import boto3 profile = input("Enter the name of the AWS account you'll be working in: ") session = boto3.Session(profile_name=profile) ec2 = session.client("ec2") regions = ec2.describe_regions() for region in regions['Regions']: region_name = region['RegionName'] if region_name=='ap-northeast-3': #https://github.com/boto/boto3/issues/1943 continue transfer = session.client("transfer", region_name=region_name) servers = transfer.list_servers() for server in servers['Servers']: if server['EndpointType']=='VPC_ENDPOINT': print(server['ServerId'], region_name)
  2. 更新するサーバーのリストができたら、以下のセクションで説明する方法のいずれかを使って、EndpointTypeVPC に更新することができます。

を使用したサーバーエンドポイントタイプの更新 AWS Management Console

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

  2. ナビゲーションペインで [Servers] (サーバー) を選択します。

  3. エンドポイントタイプを変更したいサーバーのチェックボックスをオンにします。

    重要

    エンドポイントを変更するには、その前にサーバーを停止する必要があります。

  4. [Actions] (アクション) で [Stop] (停止) を選択します。

  5. 表示される確認ダイアログボックスで [Stop] (停止) を選択して、サーバーを停止したいことを確認します。

    注記

    次のステップに進む前に、サーバーの [Status] (ステータス) が [Offline] (オフライン) に変わるのを待ちますが、これには数分かかる場合があります。ステータスの変更を見るには、[Servers] (サーバー) ページで [Refresh] (更新) の選択が必要になる場合があります。

  6. ステータスが「オフライン」に変わったら、サーバーを選択してサーバーの詳細ページを表示します。

  7. エンドポイントの詳細」セクションで、「編集」を選択します。

  8. エンドポイントタイプVPCホストを選択します。

  9. [Save] (保存) を選択します。

  10. [Actions] (アクション) で [Start] (開始) を選択してサーバーのステータスが [Online] (オンライン) になるのを待ちますが、これには数分かかる場合があります。

を使用したサーバーエンドポイントタイプの更新 AWS CloudFormation

このセクションでは、 AWS CloudFormation を使用してサーバーの を EndpointTypeに更新する方法について説明しますVPC。を使用してデプロイした Transfer Family サーバーでは、この手順を使用します AWS CloudFormation。この例では、Transfer Family サーバーのデプロイに使用される元の AWS CloudFormation テンプレートを次のように示しています。

AWS TemplateFormatVersion: '2010-09-09' Description: 'Create AWS Transfer Server with VPC_ENDPOINT endpoint type' Parameters: SecurityGroupId: Type: AWS::EC2::SecurityGroup::Id SubnetIds: Type: List<AWS::EC2::Subnet::Id> VpcId: Type: AWS::EC2::VPC::Id Resources: TransferServer: Type: AWS::Transfer::Server Properties: Domain: S3 EndpointDetails: VpcEndpointId: !Ref VPCEndpoint EndpointType: VPC_ENDPOINT IdentityProviderType: SERVICE_MANAGED Protocols: - SFTP VPCEndpoint: Type: AWS::EC2::VPCEndpoint Properties: ServiceName: com.amazonaws.us-east-1.transfer.server SecurityGroupIds: - !Ref SecurityGroupId SubnetIds: - !Select [0, !Ref SubnetIds] - !Select [1, !Ref SubnetIds] - !Select [2, !Ref SubnetIds] VpcEndpointType: Interface VpcId: !Ref VpcId

テンプレートは以下の変更によって更新されます。

  • EndpointTypeVPC に変更されました。

  • AWS::EC2::VPCEndpoint リソースは削除されます。

  • SecurityGroupIdSubnetIds、および VpcIdAWS::Transfer::Server リソースの EndpointDetails セクションに移動しました。

  • EndpointDetailsVpcEndpointId プロパティは削除されました。

更新されたテンプレートは次のようになります。

AWS TemplateFormatVersion: '2010-09-09' Description: 'Create AWS Transfer Server with VPC endpoint type' Parameters: SecurityGroupId: Type: AWS::EC2::SecurityGroup::Id SubnetIds: Type: List<AWS::EC2::Subnet::Id> VpcId: Type: AWS::EC2::VPC::Id Resources: TransferServer: Type: AWS::Transfer::Server Properties: Domain: S3 EndpointDetails: SecurityGroupIds: - !Ref SecurityGroupId SubnetIds: - !Select [0, !Ref SubnetIds] - !Select [1, !Ref SubnetIds] - !Select [2, !Ref SubnetIds] VpcId: !Ref VpcId EndpointType: VPC IdentityProviderType: SERVICE_MANAGED Protocols: - SFTP
を使用してデプロイされた Transfer Family サーバーのエンドポイントタイプを更新するには AWS CloudFormation
  1. 次の手順に従って、更新したいサーバーを停止します。

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

    2. ナビゲーションペインで [Servers] (サーバー) を選択します。

    3. エンドポイントタイプを変更したいサーバーのチェックボックスをオンにします。

      重要

      エンドポイントを変更するには、その前にサーバーを停止する必要があります。

    4. [Actions] (アクション) で [Stop] (停止) を選択します。

    5. 表示される確認ダイアログボックスで [Stop] (停止) を選択して、サーバーを停止したいことを確認します。

      注記

      次のステップに進む前に、サーバーの [Status] (ステータス) が [Offline] (オフライン) に変わるのを待ちますが、これには数分かかる場合があります。ステータスの変更を見るには、[Servers] (サーバー) ページで [Refresh] (更新) の選択が必要になる場合があります。

  2. CloudFormation スタックを更新する

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

    2. Transfer Family サーバーの作成に使用するスタックを選択します。

    3. [Update] (更新) を選択します。

    4. [Replace current template] (現在のテンプレートを置換) を選択します。

    5. 新しいテンプレートをアップロードします。 CloudFormation 変更セットは、テンプレートの変更が実行中のリソースにどのように影響するかを理解してから実装するのに役立ちます。この例では、Transfer サーバーリソースが変更され、VPCEndpointリソースが削除されます。VPC エンドポイントタイプサーバーは、ユーザーに代わってVPCエンドポイントを作成し、元のVPCEndpointリソースを置き換えます。

      新しいテンプレートをアップロードすると、変更セットは以下のようになります。

    6. スタックを更新します。

  3. スタックの更新が完了したら、 の Transfer Family 管理コンソールに移動しますhttps://console.aws.amazon.com/transfer/

  4. サーバーを再起動します。で更新したサーバーを選択し AWS CloudFormation、アクションメニューから開始を選択します。

EndpointType を使用したサーバーの更新 API

describe-server AWS CLI コマンドまたは UpdateServer API コマンドを使用できます。次のスクリプト例では、Transfer Family サーバーを停止し、 を更新 EndpointTypeし、VPC_ を削除ENDPOINTしてサーバーを起動します。

import boto3 import time profile = input("Enter the name of the AWS account you'll be working in: ") region_name = input("Enter the AWS Region you're working in: ") server_id = input("Enter the AWS Transfer Server Id: ") session = boto3.Session(profile_name=profile) ec2 = session.client("ec2", region_name=region_name) transfer = session.client("transfer", region_name=region_name) group_ids=[] transfer_description = transfer.describe_server(ServerId=server_id) if transfer_description['Server']['EndpointType']=='VPC_ENDPOINT': transfer_vpc_endpoint = transfer_description['Server']['EndpointDetails']['VpcEndpointId'] transfer_vpc_endpoint_descriptions = ec2.describe_vpc_endpoints(VpcEndpointIds=[transfer_vpc_endpoint]) for transfer_vpc_endpoint_description in transfer_vpc_endpoint_descriptions['VpcEndpoints']: subnet_ids=transfer_vpc_endpoint_description['SubnetIds'] group_id_list=transfer_vpc_endpoint_description['Groups'] vpc_id=transfer_vpc_endpoint_description['VpcId'] for group_id in group_id_list: group_ids.append(group_id['GroupId']) if transfer_description['Server']['State']=='ONLINE': transfer_stop = transfer.stop_server(ServerId=server_id) print(transfer_stop) time.sleep(300) #safe transfer_update = transfer.update_server(ServerId=server_id,EndpointType='VPC',EndpointDetails={'SecurityGroupIds':group_ids,'SubnetIds':subnet_ids,'VpcId':vpc_id}) print(transfer_update) time.sleep(10) transfer_start = transfer.start_server(ServerId=server_id) print(transfer_start) delete_vpc_endpoint = ec2.delete_vpc_endpoints(VpcEndpointIds=[transfer_vpc_endpoint])