翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Transfer Family サーバーエンドポイントタイプを VPC_ENDPOINT から VPC に更新する
AWS Management Console、、または Transfer Family API を使用して AWS CloudFormation、サーバーの を EndpointType
から VPC_ENDPOINT
に更新できますVPC
。以下のセクションでは、これらの各メソッドを使用してサーバーエンドポイントタイプを更新するための詳細な手順と例について説明します。複数の AWS リージョンと複数の AWS アカウントにサーバーがある場合は、次のセクションで提供されるスクリプト例を変更して使用して、更新する必要があるVPC_ENDPOINT
タイプを使用するサーバーを識別できます。
トピック
VPC_ENDPOINT
エンドポイントタイプを使用したサーバーの識別
AWS Management Consoleを使用することで、どのサーバーで VPC_ENDPOINT
を使用しているかを特定できます。
VPC_ENDPOINT
エンドポイントタイプを使用するサーバーをコンソールで識別するには
-
https://console.aws.amazon.com/transfer/
で AWS Transfer Family コンソールを開きます。 ナビゲーションペインの [Servers] (サーバー) で、そのリージョンのアカウント内のサーバーの一覧を表示します。
[Endpoint type] (エンドポイントタイプ) を使用してサーバーのリストを並べ替えると、
VPC_ENDPOINT
を使用してすべてのサーバーを見ることができます。
複数の AWS リージョンとアカウントVPC_ENDPOINT
で を使用しているサーバーを特定するには
複数の AWS リージョンと複数の AWS アカウントにサーバーがある場合は、次のスクリプト例を変更して、VPC_ENDPOINT
エンドポイントタイプを使用してサーバーを識別できます。サンプルスクリプトは、Amazon EC2 DescribeRegionsと Transfer Family ListServers API コールを使用して、 を使用するすべてのサーバーのサーバー IDsとリージョンのリストを取得しますVPC_ENDPOINT
。 AWS アカウントが多数ある場合は、ID プロバイダーへのセッションプロファイルを使用して認証する場合、読み取り専用の監査アクセス権を持つ IAM ロールを使用してアカウントをループスルーできます。
以下に単純な例を示します。
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)
更新するサーバーのリストができたら、以下のセクションで説明する方法のいずれかを使って、
EndpointType
をVPC
に更新することができます。
を使用したサーバーエンドポイントタイプの更新 AWS Management Console
-
https://console.aws.amazon.com/transfer/
で AWS Transfer Family コンソールを開きます。 -
ナビゲーションペインで [Servers] (サーバー) を選択します。
-
エンドポイントタイプを変更したいサーバーのチェックボックスをオンにします。
重要
エンドポイントを変更するには、その前にサーバーを停止する必要があります。
-
[Actions] (アクション) で [Stop] (停止) を選択します。
-
表示される確認ダイアログボックスで [Stop] (停止) を選択して、サーバーを停止したいことを確認します。
注記
次のステップに進む前に、サーバーの [Status] (ステータス) が [Offline] (オフライン) に変わるのを待ちますが、これには数分かかる場合があります。ステータスの変更を見るには、[Servers] (サーバー) ページで [Refresh] (更新) の選択が必要になる場合があります。
ステータスが「オフライン」に変わったら、サーバーを選択してサーバーの詳細ページを表示します。
「エンドポイントの詳細」セクションで、「編集」を選択します。
[Edit endpoint type] (エンドポイントタイプ) で [VPC hosted] (VPC ホステッド) を選択します。
[Save] (保存) を選択します。
[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
テンプレートは以下の変更によって更新されます。
EndpointType
はVPC
に変更されました。AWS::EC2::VPCEndpoint
リソースは削除されます。SecurityGroupId
、SubnetIds
、およびVpcId
をAWS::Transfer::Server
リソースのEndpointDetails
セクションに移動しました。EndpointDetails
のVpcEndpointId
プロパティは削除されました。
更新されたテンプレートは次のようになります。
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
次の手順に従って、更新したいサーバーを停止します。
-
https://console.aws.amazon.com/transfer/
で AWS Transfer Family コンソールを開きます。 -
ナビゲーションペインで [Servers] (サーバー) を選択します。
-
エンドポイントタイプを変更したいサーバーのチェックボックスをオンにします。
重要
エンドポイントを変更するには、その前にサーバーを停止する必要があります。
-
[Actions] (アクション) で [Stop] (停止) を選択します。
-
表示される確認ダイアログボックスで [Stop] (停止) を選択して、サーバーを停止したいことを確認します。
注記
次のステップに進む前に、サーバーの [Status] (ステータス) が [Offline] (オフライン) に変わるのを待ちますが、これには数分かかる場合があります。ステータスの変更を見るには、[Servers] (サーバー) ページで [Refresh] (更新) の選択が必要になる場合があります。
-
CloudFormation スタックを更新する
https://console.aws.amazon.com/cloudformation
で AWS CloudFormation コンソールを開きます。 Transfer Family サーバーの作成に使用するスタックを選択します。
[Update] (更新) を選択します。
[Replace current template] (現在のテンプレートを置換) を選択します。
新しいテンプレートをアップロードします。 CloudFormation 変更セットは、テンプレートの変更が実行中のリソースにどのように影響するかを理解してから実装するのに役立ちます。この例では、Transfer サーバーリソースが変更され、vpcendPoint リソースが削除されます。VPC エンドポイントタイプサーバーはユーザーに代わって VPC エンドポイントを作成し、元の
VPCEndpoint
リソースを置き換えます。新しいテンプレートをアップロードすると、変更セットは以下のようになります。
スタックを更新します。
スタックの更新が完了したら、Transfer Family 管理コンソール (https://console.aws.amazon.com/transfer/
) に移動します。 サーバーを再起動します。で更新したサーバーを選択し AWS CloudFormation、アクションメニューから開始を選択します。
API EndpointType を使用したサーバーの更新
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])