Lambdaで最新AMIを取得する!(Python)

Lambda(python)で最新AMI IDを取得するプログラムを書きました。

Windowsは「Windows Servier 2012 R2 Base」、Linuxは「Amazon Linux」の最新AMI IDを取得してます。 Filters部分をカスタマイズしてもらえれば、その他にも使えると思います!    

Windows

import boto3

def lambda_handler(event, context):
    client = boto3.client('ec2')
    response = client.describe_images(
        Owners=['amazon'],
        Filters=[
            {
                'Name': 'root-device-type',
                'Values': ['ebs']
            },
            {
                'Name': 'architecture',
                'Values': ['x86_64']
            },
            {
                'Name': 'name',
                'Values': ['Windows_Server-2012-R2_RTM-Japanese-64Bit-Base*']
            }
        ]
    )
    
    list = []
    
    for x in response["Images"]:
        name = x["Name"]
        ami_id = x["ImageId"]
        list.append([name, ami_id])
    
    list.sort(key=lambda x:x[0], reverse=True)
    print list[0][1]

Linux

import boto3

def lambda_handler(event, context):
    client = boto3.client('ec2')
    response = client.describe_images(
        Owners=['amazon'],
        Filters=[
            {
               'Name': 'root-device-type',
                'Values': ['ebs']
            },
            {
                'Name': 'architecture',
                'Values': ['x86_64']
            },
            {
                'Name': 'block-device-mapping.volume-type',
                'Values': ['standard']
            },
            {
                 'Name': 'name',
                 'Values': ['amzn-ami-hvm*']
            }
        ]
    )
    
    list = []
    
    for x in response["Images"]:
        name = x["Name"]
        ami_id = x["ImageId"]
        list.append([name, ami_id])
    
    list.sort(key=lambda x:x[0], reverse=True)
    print list[0][1]

【備忘録】CloudWatchLogsのロググループ作成とログ保持期間を変更するワンライナー

以前、【備忘録】CloudWatchLogsのログ保持期間を変更するワンライナーを投稿しましたが、 今回は、少しバージョンアップして、CloudWatchLogsのロググループ作成とログ保持期間を変更するワンライナーです!

for LOGGROUPNAME in $(cat <CloudWatchLogsのロググループ名を入れたファイル>) ;do aws logs create-log-group --region ap-northeast-1 --log-group-name ${LOGGROUPNAME} && aws logs put-retention-policy --region ap-northeast-1 --log-group-name ${LOGGROUPNAME} --retention-in-days <ログ保持期間>;done

※事前に<CloudWatchLogsのロググループ名を入れたファイル>を作成しておいてください!

【備忘録】CloudWatchLogsのログ保持期間を変更するワンライナー

CloudWatchLogsのログ保持期間を変更するワンライナーです。

aws logs describe-log-groups --region ap-northeast-1 --query 'logGroups[].logGroupName' --output text| tr '¥t' '¥n' | while read LOGGROUP; do aws logs put-retention-policy --region ap-northeast-1 --log-group-name ${LOGGROUP} --retention-in-days 7; done

ロググループが50個ほどあったので楽チンに変更できました(°∀° )/

Data Migration Serviceを触ってみた!

概要

           (レプリケーション用のインスタンスの料金はオンデマンドインスタンスよりもちょっと割高)
  • レプリケーション用のインスタンスは停止することができない(起動or削除のみ)
  • データベースの同じプラットフォーム間だけでなく、異なるプラットフォームに変えることも可能
           例)OracleOracle , Oracle → Aurora
  • 移行元、移行先のどちらかがAWS上にある必要があるが、他はオンプレミスでも、DB on EC2でも、RDSでもOK
  • 移行の種類は以下の3つから選択可能
       ①"migrate existing data" (既存データの一括ロード)
       ②"migrate and then replicate" (一括コピーした後に、継続的に差分レプリケーション)
       ③"replicate going forward" (差分レプリケーションのみ実行)
 
 
検証した環境

f:id:aym413:20160626190345p:plain

  • OracleOracleへ移行
  • ダミーデータは1000件(氏名、メールアドレス、生年月日等)
  • 移行の種類は上記①"migrate existing data"を選択
 
AWS DMS構築の流れ

AWS DMS用Subnet Groupの作成

f:id:aym413:20160626190346j:plain

f:id:aym413:20160626190347j:plain

 
  ↓RDS同様にAZをまたがる2つのSubnetが必要になります。

f:id:aym413:20160626190348j:plain

f:id:aym413:20160626183641j:image

 
AWS DMS用インスタンスの作成

f:id:aym413:20160626190350j:plain

f:id:aym413:20160626191923j:plain 

f:id:aym413:20160626190352j:plain

f:id:aym413:20160626190353j:plain

③移行元・移行先エンドポイント(接続情報)の作成
まずはSource Endpointから作成します。

f:id:aym413:20160626190354j:plain

 ↓接続テストを行って成功すればOKです。

f:id:aym413:20160626183656j:image

 
次はTarget Endpointを作成します。
↓こちらも接続テストを行って成功すればOKです。

f:id:aym413:20160626183653j:image

f:id:aym413:20160626190357j:plain

 
④タスクの作成
  ↓エンドポイントの選択や移行の種類、どのテーブルを移行するか等を設定

f:id:aym413:20160626183644j:image

 
⑤タスクの実行
 ↓しばらくするとStatusが「Load complete」になります

f:id:aym413:20160626192131j:plain

 
 ↓ CloudWatch Logsを見ると、1000件のデータロードが終わったことを確認できます。

f:id:aym413:20160626190400j:plain

 
検証結果

  • ダミーデータ1000件は問題なく移行できた
  • 文字コードも変わらずそのまま移行できた
  • 移行時間は1~2分程度
 
 
つまづいたところ

① 環境準備のところで…
  →環境変数文字コードを変更
AWS DMSのところで…
  • 指定したスキーマのテーブルが移行されない
  →AWS DMSで作成したエンドポイントで指定したスキーマが、タスクで使用されるデフォルトのスキーマになる
  →最初エンドポイントのスキーマで「system」等の管理者アカウントを指定したため、「ORACLE_OCM」がデフォルトスキーマとして登録された
  →エンドポイントのスキーマ設定で、移行用スキーマを指定すれば、問題なくテーブルが移行できた
 

【備忘録】Route53でドメイン買うとき

Route53で初めてドメインを購入したのですが、その際にあたふたしたのでメモ。
 
1. Route53でドメイン買う
2. ホストゾーンを作る
3. 登録したホストゾーンのNSレコード4つをメモ
4. 購入したドメインのAdd/Edit Name Serverに3でメモしたNSレコードを入力して、Updateをクリック
5. 「Domain details update for xxxxx succeeded」のメールが届く
 
画面が載せられないのが残念。。

AWSソリューションアーキテクト-プロフェショナルに合格✨

ちょうど1か月ほど前になりますが、
 
AWSソリューションアーキテクト-プロフェショナル”
 
に合格しました!
 
 
約1年前?に、認定資格が2年更新になるよと伝えられ、
2016年4月末までにプロフェッショナルか再認定に合格しないと失効するよ
 
ということで、この1年間ダラダラと勉強し続け…
 
2016年4月30日無事合格!(ギリギリ)
 
となりました。
 
もちろん、簡単ではなかったです。。
模擬試験は2回受けて2回とも落ちていますし。
本試験も1回落ちていますし。
 
ということで、私なりの勉強備忘録を残しておきます。誰かのお役に立てれば幸いです。
 
  • サンプル問題を解く
  • 模擬試験を受ける
    • 問題文がとにかく長いですが、読むことを諦めないでください
    • 何が問われているかをまず把握する(コスト? 可用性? などなど)
    • 問題文がどんな構成なのかを自分なりに構成図などを書いて整理するのがオススメ
  • 活用集とドキュメントとCDPを読む!読む!!読む!!!
    • 実業務で触ったことのないサービスは書いてまとめました
  • 基本的なIT知識の勉強
    • クラウド世代なもので、ここを理解するのが大変だった…
  • 他の人の勉強法を参考にする
  • 本試験を受ける
    • 1回目は落ちる覚悟で、とにかく問題や選択肢のキーワードをたくさん覚えて帰るw(←1回目は早く受けるのがオススメ)
    • そのキーワードを元にわからなかったサービスなどをさらに勉強!
    • 試験の際に白紙のメモが渡されるので、そこに選択肢の番号を書いて、「これは違う!」と思ったらバツを書いて正解を絞っていきました
    • ちょっと考えて分からなかったら「後で見直す」にチェックしておいて、後回しにするのが良いです(粘っても時間がなくなるだけです)
 
とまあ、受かったわけですが…
まだまだ触ったことのないサービスも多く、机上の知識しかないものもたくさんあるので
プロフェッショナルの名に恥じないようさらに勉強します!!
 

【備忘録】RDSに複数のセキュリティグループを付けたいとき


RDSをポチポチを作成していて、複数のセキュリティグループ付けたいんだけど、
あれ?あれ?ってなったので残しておきます。

まあ、やり方は簡単で、、
「Ctrl」キーを押しながらアタッチしたいセキュリティグループをポチっとするだけでしたー。

EC2みたいにチェックボックスのほうが楽だな~~