AWS EC2 ElasticIP PublicIP を 外して別紐付けする コマンド

EC2 インスタンスに紐づいている PublicIPを外して、 新たにPublicIPを紐付ける AWS CLIコマンドです

EC2 インスタンス一覧確認

aws ec2 describe-instances --region {リージョン} --profile {プロファイル名}

EC2 インスタンスID指定での確認

aws ec2 describe-instances --instance-ids {i-インスタンスID} --region {リージョン名} --profile {プロファイル名}

Instances[{InstanceId:””, PublicIpAddress:””}] インスタンスIDと PublicIPを確認できます

ElasticIP 新規IPをアロケートする

aws ec2 allocate-address --domain vpc --region ap-northeast-1 --profile {プロファイル名}

ElasticIP 一覧

aws ec2 describe-addresses  --region ap-northeast-1 --profile {プロファイル名}

EC2インスタンスに 紐づいたPublicIPを外す

aws ec2 disassociate-address  --public-ip {外したいPublicIPアドレス}  --region ap-northeast-1 --profile {プロファイル名}   

ElasticIP PublicIPを AWSに返す

aws ec2 release-address --allocation-id {eipalloc-アロケーションID} --region ap-northeast-1 --profile {プロファイル名}

アロケートしたPublicIPと EC2 インスタンスを紐づける

aws ec2 associate-address --allocation-id {eipalloc-アロケーションID} --instance {i-インスタンスID} --region ap-northeast-1 --profile {プロファイル名}

EC2 インスタンスを起動

aws ec2 start-instances --instance-ids  {i-起動したいインスタンスID} --region ap-northeast-1 --profile {プロファイル名}

Python API Gateway からCSVダウンロードする

Python Lambda で作ったカンマ区切り文字列を API Gateway 経由で CSVダウンロードする

API Gateway から Python ( Lambda ) で作成した カンマ文字列を CSV形式でダウンロードできるようにする方法です

Lambda 側で headersを指定して返せば どんなフォーマットでも返すことは可能です

CSVファイルを返す場合 ヘッダーは Content-TypeContent-disposition を使います

Python ( Lambda )コード例 ↓

def lambda_handler(event, context):
    body_str = """column1,column2,column3
"値1","値2","値3"
"""
    return {
        'statusCode': 200,
        "isBase64Encoded": True,
        "headers":{
            "Content-Type": "application/vnd.ms-excel",
            "Content-disposition": "attachment; filename=hoge.csv" # CSVファイル名を指定
        },
        "body": f"\ufeff{body_str}" # BOMを設定
    }

body_strという変数に、 カンマ区切り文字列を代入し

その値をCSVファイルとして ダウンロードできるように返しています

文字列の先頭に \ufeff を入れるのは、 BOMです

API Gateway のURLにアクセスすると、下のようにCSVファイル形式でダウンロードできました

body_str に代入したカンマ区切りの文字列

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED