Amazon LinuxのAMI-IDをAWS CLIで取得する方法

cdkでec2を起動するようにしていたところ、AMIのIDや一覧を取得する必要があったので、メモしておきます。

AWS CLIで取得したので、フィルタは下記の通りです。

  • ownerはamazon
  • amiの名前(name)をamzn-ami*
  • descfriptionをAmazon*2018*
  • virtualization-typeをhvm

AWS CLIを実行すると下記の通りです。

$ aws ec2 describe-images --filter "Name=owner-alias,Values=amazon" "Name=name,Values=amzn-ami*"  "Name=description,Values=Amazon*2018*" "Name=virtualization-type,Values=hvm"
{
    "Images": [
        {
            "Architecture": "x86_64",
            "CreationDate": "2018-08-13T19:09:56.000Z",
            "ImageId": "ami-0041c416aa23033a2",
            "ImageLocation": "amazon/amzn-ami-2018.03.e-amazon-ecs-optimized",
            "ImageType": "machine",
            "Public": true,
            "OwnerId": "591542846629",
            "State": "available",
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/xvda",
                    "Ebs": {
                        "DeleteOnTermination": true,
                        "SnapshotId": "snap-09326f109fc250e2a",
                        "VolumeSize": 8,
                        "VolumeType": "gp2",
                        "Encrypted": false
                    }
                },
                {
                    "DeviceName": "/dev/xvdcz",
                    "Ebs": {
                        "DeleteOnTermination": true,
                        "VolumeSize": 22,
                        "VolumeType": "gp2",
                        "Encrypted": false
                    }
                }
            ],
            "Description": "Amazon Linux AMI 2018.03.e x86_64 ECS HVM GP2",
            "EnaSupport": true,
            "Hypervisor": "xen",
            "ImageOwnerAlias": "amazon",
            "Name": "amzn-ami-2018.03.e-amazon-ecs-optimized",
            "RootDeviceName": "/dev/xvda",
            "RootDeviceType": "ebs",
            "SriovNetSupport": "simple",
            "VirtualizationType": "hvm"
        },
        {
            "Architecture": "x86_64",
            "CreationDate": "2018-11-17T01:08:05.000Z",
            "ImageId": "ami-007a27b62715a73d5",
            "ImageLocation": "amzn-ami-ap-northeast-1/957cba359c4af654e937d39e75cbf1778809a16c19297f6b535fb987d92eaf94/137112412989/amzn-ami-minimal-hvm-2018.03.0.20181116-x86_64.ext4.gpt.10g.manifest.xml",
            "ImageType": "machine",
            "Public": true,
            "OwnerId": "137112412989",
            "State": "available",
            "BlockDeviceMappings": [],
            "Description": "Amazon Linux AMI 2018.03.0.20181116 x86_64 Minimal HVM s3",
            "EnaSupport": true,
            "Hypervisor": "xen",
            "ImageOwnerAlias": "amazon",
            "Name": "amzn-ami-minimal-hvm-2018.03.0.20181116-x86_64-s3",
            "RootDeviceType": "instance-store",
            "SriovNetSupport": "simple",
            "VirtualizationType": "hvm"
        },
以下省略...

EC2 インスタンスタイプの一覧をゲットする

EC2インスタンスの一覧を作ろうとしたところ、どこかにないかと探したのでメモしておきます。

$ cat ~/.pyenv/versions//2.7.10/lib/python2.7/site-packages/botocore/data/ec2/2016-11-15/service-2.json|jq '.shapes.InstanceType.enum'
[
  "t1.micro",
  "t2.nano",
  "t2.micro",
  "t2.small",
  "t2.medium",
  "t2.large",
  "t2.xlarge",
  "t2.2xlarge",
  "t3.nano",

めちゃめちゃ便利!

というか、手元にあった。(笑)

AWS CDKに必要なドキュメント

AWS CDKを触っていて、いろいろ調べてみたりしてドキュメントがまとまったので記事にしました。

ユーザーガイド

https://docs.aws.amazon.com/ja_jp/CDK/latest/userguide/what-is.html

リファレンス

https://awslabs.github.io/aws-cdk/index.html

ワークショップ

https://cdkworkshop.com/

AWS CloudFormationのドキュメント

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html

AWS CDKファーストステップ

AWS CDK を使ってAWS環境を構築します。

今更ながら感はありますけど、最近使い始めてみたので記事を書いてみます。

AWS CDKって何?

https://awslabs.github.io/aws-cdk/
https://github.com/awslabs/aws-cdk
によると
AWS Cloud Development Kit (AWS CDK)
というAWSのクラウド環境のためのツールになります。

AWS CDKで何ができるの?

Getting Startedを触ってみます。

$ npm i -g aws-cdk
$ mkdir infra
$ cd infra
$ cdk init app --language=typescript
$ cdk deploy

このままだとこれだけなので、下記を参考するだけでもいいってなります。

https://docs.aws.amazon.com/CDK/latest/userguide/what-is.html

AWS CDKを触ってみたところ

好きな言語からCloudFormationのテンプレートを作成・デプロイをする便利なツールってところですね

下記のコマンドで、ビルドと構文チェックできます。

npm run build
npm run watch

CloudFormationのテンプレートを確認

cdk synth

CloudFormationでデプロイ

cdk deploy

ソースを修正したら、比較!(そのあとデプロイ!)

cdk diff

まとめ

CloudFormationの知識が必要になりますが、typescriptなどの言語で自由にテンプレートを生成できるのがいいですね!

CloudFormatinoのJSON(YAML)の量の大変さは少し改善できそうですよ!

ブログの環境を変更しました。

LightSail → S3静的サイトに移行しました。

ブログの環境をLightSailからS3静的サイトに移行しました。
移行したというより、またS3静的サイトに戻したということになります。

当初は、Markdownファイルの練習も兼ねて
https://hexo.io/
でS3静的サイトで構築してました。

サイトにログインして記述するという環境がではなく
PCでMarkdownを作ってからになるので
どうしても早くなりませんでした。

そこで、Lightsailを採用してましたが
コストが高いので、S3静的サイトに戻しました。

いろいろと工夫をしているので、どこかでお話しできればと思います。