やーまんぶろぐ

気が向いた時にだけ書くブログ

AWS Organizations に属するアカウントを作成する

昔から一括請求でAWSアカウントを取りまとめているケースがあると思いますが、今はAWS Organizationsの機能の一部になっています。

通常、メンバーアカウントを追加する場合は、
クレジットカードなどを入力して作成したAWSアカウントを紐づけるという作業が必要になります。

以下の手順に従って、AWS Organizationsの機能を使うと簡単にメンバーアカウントを作成できました。
docs.aws.amazon.com

root ユーザーとしてアカウントに初めてアクセスする場合は、アカウントのパスワード復旧プロセスを行う必要があるので注意が必要です。
docs.aws.amazon.com

後で気づいたのですが、以下に綺麗にまとまってました。
qiita.com

SSL証明書のCT(Certificate Transparency)への対応について

2018/04/30 からChromeでのCT義務化がスタートします。

SSL証明書を利用してWebサービスを提供している管理者は、利用中のSSLサーバ証明書を確認して、サイトアクセス時の警告/エラーを回避する必要がありそうです。

詳細は下記サイトをご覧ください。
CT(Certificate Transparency)への対応について

CT(Certificate Transparency)とは

リンク先から引用。

CTは証明書発行の証跡を第三者の監査ログに記載する仕組みです。

主に、ウェブサイトの運営者やドメイン名の管理者が、その監査ログサーバを確認することで、自分のドメインに対して不正な証明書や、ポリシー外の認証局からの証明書が発行されていないかを検証することができます。

それにより利用者が不正に発行された証明書を信頼することを防止します。

監査ログサーバに証明書を提供する事で、ブラウザ等のクライアントは、そのログの中にその証明書データが登録されているかどうかを確認する事が出来ます。

全部は把握できてないので、一部だけメモ。

グローバルサインの場合

こちらもリンク先から引用。

アルファSSL 2016年08月29日以降に発行されるアルファSSLが対応予定です。
クイック認証SSL 2016年08月29日以降に発行されるクイック認証SSLが対応予定です。
企業認証SSL 2017年10月30日以降に発行される企業認証SSLが対応予定です。
EV SSL 2014年12月24日以降に発行された証明書は対応しております。

グローバルサインは今回の警告対象とはなっておらず、CTに非対応の証明書でも警告が出る事はない事を認証局に確認しております。

CTに非対応でもエラーメッセージが出るわけではないので直近で影響はなさそう。

AWS Certificate Manager (ACM)の場合

以下のリンクを参考。
AWS Certificate Manager (ACM) が Certificate Transparency (CT) をサポートするための準備 | Amazon Web Services ブログ
AWS Certificate Manager (ACM)のCertificate Transparency (CT)サポートが始まります | Developers.IO

4/24からログ記録しますよ。無効にしたい人は3/27から無効にしてね。その場合はChromeでエラー表示されますよ。という解釈。

【訳注】Google の記事に詳細が記載されていますが、2018年4月24日までに ACM で発行された証明書には SCT 情報が付いていませんが、SCT 情報が付いて無くても Google Chrome でエラーメッセージが表示されるなどの影響は現時点では予定されていません。

CTログ無効化しない場合、SCT情報がなくてもエラーメッセージが出るわけではないので直近で影響はなさそう。

最後に

有効にするか無効にするかの判断材料については把握していません。
もう少しwatchしておく必要がありそう。

2018/02/23 Security JAWS 【第8回】参加レポート

Security JAWSの参加レポートです。
s-jaws.doorkeeper.jp

ブログの会社の人のレポートが良くまとまっています。もはや自分でレポート書く意味はあるのだろうか。。
dev.classmethod.jp

Session1:Amazon Web Service Japan 桐山 隼人さん, 塚田 朗弘さん 「 AWS FinTech リファレンス•アーキテクチャーで大手金融機関ばりのセキュリティを実現しよう(仮) 」

情報盛りだくさん。スライド公開希望。

  • セキュリティ要件
    • 今まで
      • オンプレでやってたことをクラウドでできる。
    • これから
      • クラウドのほうがセキュリティを高められる。


  • サンプルケース
    • 1. システムモニタリング
      • cloud watch
      • auto scale
    • 2. システムへの管理アクセス認証
      • IAM 権限最小限
      • systems managerのパラメータストアを使う
      • IAMロールを使う
      • gitシークレットを使いましょう
    • 3. インシデントレスポンス
      • guard duty
      • step functionを使ってセキュリティのオートメーションする
    • 6. 操作履歴の取得と証跡管理
      • IAM user + CloudTrail
    • 7. ソフトウェア開発時の品質確保
      • devops
      • codeシリーズ
    • 9. 顧客対応窓口の用意
    • 10. API提供時のセキュリティ
      • api gateway
      • cognito(auth2.0対応)
      • loudwatch logs


Session2:CloudNative Inc. 吉田 浩和さん「踏み台環境におけるAmazon Maice活用の提案(仮)」

speakerdeck.com

  • 踏み台
    • 誰がログインできるか(認証認可)
    • 唯一の通り道
    • ユーザーの行動記録やデータが通過(監査ポイント)
  • 20 CISを参考
    • CIS Controls ←後で読む
    • 6. Maintenance, Monitoring, and Analysis of Audit Logs
    • 13. Data Protection
    • 打鍵ログの取得/分析は大事だけど、監査しないと意味はない。
  • Amazon Macie
    • S3に打鍵ログを保存してMacieで分析する
    • バケット設定時とputされたときに評価する


Session3:ヴイエムウェア株式会社 大久 光崇さん 「VMware Cloud on AWS ご紹介 - セキュリティ風味」


Session4:Splunk Services Japan 横田 聡さん「事例に学ぶ、Splunk×AWSセキュリティモニタリングの具体策(仮)」

www.slideshare.net

デブサミ2018 2日目 参加レポート

デブサミ2018に参加したのでメモを残しておきます。
Developers Summit 2018

中身は資料を見るのが速いと思うので、講演資料のまとめリンクを置いておきます。
codezine.jp

1日目の参加レポート
yamano3201.hatenablog.jp

【16-D-1】IoTサービスを始める際に必要なこととは(松下 享平 [ソラコム]/沖 光芳 [IT工房Z]/高橋 一貴 [チカク])

www.slideshare.net


【16-D-2】NRIの働き方改革 - 開発スタイルから文化まで変えた軌跡 -(中川 直樹 [野村総合研究所]/新村 剛史 [アトラシアン])

NRIの働き方改革のお話。ツールを通じてチームを変えていくという内容でした。
メールが減った、議論が増えたなどのツール導入による効果測定が難しいものを測定していたのが素晴らしかった。
また、社内で導入した製品やプラグインを社外向けに販売しているという流れも素晴らしかった。

導入促進のために意識することメモ。

  • 反対勢力
  • 使い方がわからない
    • 管理者が設定
    • おすすめテンプレを作成
    • 説明会、ハンズオン。ライトなツールから展開。
  • 現行保証
    • 業務フローを提案
    • コンサル
    • プラグイン作成、エクセルマクロ作成
    • 現行保証不要なツールのネイティブ利用者を作る

【16-A-3】エンタープライズアジャイル(川口 恭伸 [楽天])

speakerdeck.com

アジャイルエンタープライズのお話。

アジャイルエンタープライズ

アジャイルエンタープライズ

耳の痛い話が多かった。早くアジャイルエンタープライズにならなければ。






【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発(小泉 清一 [デンソー]/佐藤 義永 [デンソー])

www.slideshare.net

NECと元東芝の人の話。タイトルは大げさだけど、内容は大きな会社で確実にアジャイルをやっているという話で面白かった。

上司に伺わなければ進めないなどの決定権を取り除くのが鍵、偉い人をいかに突き崩して、意思決定の速いフラットな組織を作るかが大事。

これまた耳が痛い。

  • シリコンバレーのやり方を取り入れる
    • デザイン指向サービスデザイン
    • Connected IoT Platform
    • アジャイル開発、内製化
  • デンソーが力を入れていること
    • やることやらないことを決める
    • 不必要に人を関わらせない
      • コミュニケーションロスを防ぐ
    • リソースを固定する





【16-B-5】1 to 100:子どものためのオープンソースコミュニティ「CoderDojo」が全国100ヶ所を超えるまで(安川 要平 [CoderDojo Japan])

speakerdeck.com

いつか参加してみたい。



【16-A-6】クラウド時代の組織変革の道(各務 茂雄 [ドワンゴ])

niconare.nicovideo.jp

組織の問題にロジカルな解決策を取っていて参考になった。

  • 会社に足りないものは?
  • 変革のゴール
    • 先行指標(サービス化、エンジニアのレベルアップと良いチーム作り、仕組化)
    • 遅行指標(新サービスリリース、売上UP、コストダウン)
      • 先行指標を徹底的に磨き上げる
  • ドワンゴが実施している内容
    • サービス化 ハイブリットクラウドサービスを提供 APIのように全てのコミュニケーションが取れる
    • チーム作り
      • 各ロールの採用~卒業まで仕組みが重要
    • 仕組化
      • 新規サービスをOnTimeでリリース
      • 既存のレガシー資産を計画して整理
      • AWSGCPに負けないOperationモデル(多分標準化と自動化)
      • 報連相を徹底しミスコミュニケーションをなくす
      • 自己成長をする






デブサミ2018 1日目 参加レポート

デブサミ2018に参加したのでメモを残しておきます。
Developers Summit 2018

中身は資料を見るのが速いと思うので、講演資料のまとめリンクを置いておきます。
codezine.jp

【15-G-1】AWSのフルマネージドな環境でCI/CDをやってみよう!AWS Cloud9からAWS Fargateへの継続的デプロイをご紹介。(福井 厚[アマゾン ウェブ サービス ジャパン])

codeシリーズを使って開発からコンテナのデプロイするまでのお話。

cloud9はブラウザのみで開発できるIDE。以下は過去記事。
yamano3201.hatenablog.jp

code starでまとめると便利そうなので近いうちに触ってみたいと思います。

新しく知ったことをメモ。


【15-E-2】Googleのネットワーク開発に見るITエンジニアリングの本質(中井 悦司 [Google Cloud Japan])

GCPの裏側の話がメイン。


【15-D-L】サイボウズのリモート開発 変わったもの×変わらなかったもの(水戸 将弥 [サイボウズ])

speakerdeck.com

サイボウズの働き方についてのお話。

スピーカーの方はマネージャーで、オフィスにいなくてもマネジメントできる手ごたえを掴んだらしいのですが、
セッションで具体的なマネジメントについて語られることはありませんでした。

リモートでのマネジメントのイメージがわからなかったので聞きたかった。
プロジェクトマネジメントはツールでなんとかなりそうだけど、評価や勤怠管理はどうなってるんだろう。

商売よりも育児が大事という考え方は素晴らしいですね。

以下は、制度、ツール、風土についてのメモ。

  • 制度
    • 各自が理想的な働き方を宣言
    • 好きな時間と場所を選んで働けるウルトラワーク
  • ツール
    • kintone
      • タスク管理、議論、ひとりごと、勉強会資料置場、カレンダーなど
    • Skype for Business
    • 在宅用PC
  • 風土
    • 在宅中心の働き方
    • リアルを重視
    • 振り返り/KAIZEN。
    • HRT(謙虚 Humility, 尊敬 Respect, 信頼 Trust)。心理的安全性。自己組織化。


【15-G-4】Machine Learning on AWS(桶谷 拓也 [アマゾン ウェブ サービス ジャパン])

個人的に注目しているMLaaSのSageMaker。近いうちに触ってみたい。

Greengrass ML Inferenceはまだプレビューですね。
ネットワークの遅延すら問題になるような環境ではエッジでの推論が求められたりするようです。GAしたら触ってみたい。


【15-D-4】Amazon Alexa Skills開発におけるAWSとの連携(亀田 治伸 [アマゾン ウェブサービス ジャパン])

Alexa Skills開発のの基本的なお話。

以下は過去記事。
yamano3201.hatenablog.jp


【15-A-6】次世代配車アプリ「タクベル」のシステムアーキテクチャー(小林 篤 [ディー・エヌ・エー])

特定のタクシー事業者に依存しない、タクシー配車共通スマホアプリのお話。
背景は高齢化、都市化が進んで車と都市空間の奪い合いが始まるので社会問題を解決したいとのこと。

テック企業だけあって、UI/UXも含めて作りこまれている印象。
各分野の製造業は危機感を持ったほうが良さそうですね。

印象的だったのは技術の向き合い方として仲良くなるというのを重視しているところ。
自社で高い技術を持っているDeNAも、クラウドベンダーと協力してビジネスを行っているんだなぁと感じました。

以下、メモ。

  • ITS(Intelligent Transport Systems) Algorithm
  • UserApp
    • 外部情報と連携
  • Hardware
    • Androidから毎秒あげている
    • BLE Loggerは同じモノで対応
  • DriverApp
    • MDM。セキュリティ要件
  • IoT Server System
    • AWS + GCPのハイブリット構成
    • AWS IoTで受けてBSON -> JSONにLambdaで変換
    • 検索はGCPのBigQueryを使いたかった

Alexa Skills Kit + IRKitを使って家電を操作する

前回は、IFTTTを使って家電を操作してみました。
yamano3201.hatenablog.jp

今回はAlexa Skills Kitを使って家電を操作してみます。下の2つの記事を参考にしました。
Alexaスキル開発トレーニングシリーズ 第1回 初めてのスキル開発 : Alexa Blogs
7. 自作した日本語のAlexa SkillをEcho dotで動かす - Qiita

設定が終わると、「Alexa、アイアールキットでテレビをつけて」と話しかけると、テレビをつけることができるようになります。

流れを書いていきます。

Amazon DeveloperアカウントとAWSアカウントを作成

作成しましょう。

Alexa Skills Kitを作成

まずはAmazon Developerアカウントで作業します。

スキル情報

  • スキルの種類
    • カスタム対話スキル
  • 言語
    • Japanese
  • スキル名
    • IRKitSkill(任意) 
  • 呼び出し名
    • アイアールキット(任意)

ここでは呼び出し名が重要になってきます。
次に対話モデルを作成していきます。

インテントスキーマ

{ "intents": [
  { "intent": "TargetOnIntent",
    "slots": [
      {
        "name": "Target",
        "type": "LIST_OF_TARGETS"
      }
    ]
  },
  { "intent": "TargetOffIntent",
    "slots": [
      {
        "name": "Target",
        "type": "LIST_OF_TARGETS"
      }
    ]
  }
]}

Intentは機能と紐付いています。ここではターゲットをオンにするIntentと、オフにするIntentを用意しました。

slotsは項目と紐付いてます。同じオンにするIntentでも項目は複数あるので必要な分だけ用意します。ここではターゲットとしました。

カスタムスロットタイプ

  • LIST_OF_TARGETS
    • テレビ | リビング | エアコン

slotsを3つ用意しました。ここではslotsのtype名を指定します。

サンプル発話

TargetOnIntent {Target} をつけて
TargetOffIntent {Target} を消して

Intentと呼び出し方を紐付けます。slotsを使用する場合はslotsのnameを{}で指定します。

IDを確認

Lambda関数の作成で使うのでIDを確認しておきます。左上に表示されています。

amzn1.ask.skill.xxxxxxxxxxxxxxxxxxxxxx

Lambda関数の作成

ここからはAWSアカウントで作業します。

一から作成

  • 名前
    • IRKitSkill (任意)
  • ランタイム
    • Python3.6
  • ロール
    • IRKitSkillRole (任意)
      • Lambdaに信頼関係があり、AWSLambdaBasicExecutionRoleのポリシーがついたロールを作成します。

Lambda関数の更新

ローカルで作成したものをzipにしてアップロードします。

ここからはローカルで作業します。

モジュールインストール

まずはrequestモジュールをインストールします。

$ sudo /usr/bin/pip-3.6 install requests -t .

コード作成

続いてlambda_function.pyを作成します。
説明のためにコードはシンプルにしています。

import requests
import json

def post_message(clientkey, deviceid, data):
    message = {
        "format": "raw",
        "freq": 38,
        "data": data
    }
    params = {
        'clientkey': clientkey,
        'deviceid': deviceid,
        'message': json.dumps(message)
    }
    res = requests.post(
        'https://api.getirkit.com/1/messages',
        params=params,
        headers={'Content-Type': 'application/x-www-form-unlencoded'}
    )
    print(res.status_code)

def lambda_handler(event, context):
    intent = event['request']['intent']['name']
    target = event['request']['intent']['slots']['Target']['value']

    clientkey = 'XXXXXXXXXXXXXXXXXX'
    deviceid = 'XXXXXXXXXXXXXXXXXX'
    
    data_hash = {
        'TargetOnIntent': {
            'テレビ': [18031,8755,1190...],
            'リビング': [17421,8755,1232...],
            'エアコン': [6881,3341,904...]
        },
        'TargetOffIntent': {
            'テレビ': [18031,8755,1190...],
            'リビング': [17421,8755,1111...],
            'エアコン': [6881,3341,904...]
        }
    }

    data = data_hash[intent].get(target)
    post_message(clientkey, deviceid, data)

    if intent == 'TargetOnIntent':
        text = f'{target} をつけました'
    elif intent == 'TargetOffIntent':
        text = f'{target} を消しました'

    response = {
        'version': '1.0',
        'response': {
            'outputSpeech': {
                'type': 'PlainText',
                'text': text
            }
        }
    }
    print(text)
    return response

clientkey, deviceid, 赤外線Dataは事前に用意しておきます。
Intentとslotsによって赤外線Dataが変わるので、そのようなハッシュ値をもたせています。

zipにしてアップロード

$ zip -r lambda_function.zip .
$ aws lambda update-function-code --function-name IRKitSkill --zip-file fileb://lambda_function.zip

事前にクレデンシャルかIAMロールを準備しておきましょう。

トリガー作成

  • トリガーの追加
    • Alexa Skills Kitを設定
  • アプリケーションID
    • Alexa Skills Kit作成時に確認したID

Arnを確認

arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:IRKitSkill
XXXXXXXXXXXXXXXにはAWSのアカウントIDが入ります。

Alexa Skills Kitの設定

再びAmazon Developerアカウントで作業します。

SkillとLambda関数を紐付け

エンドポイント -> サービスエンドポイントのタイプ -> AWS Lambda ARN (Amazonリソースネーム) -> Lambda関数作成時に確認したArnを指定する。

Skills Beta TestingでEchoを動かす

実際に持っているEchoで動かすには、Skills Beta Testingに登録する必要があります。
公開情報やプライバシーとコンプライアンスを入力しないと登録できないので注意。

公開情報を入力する。

アイコンの入力が必須です。

プライバシーとコンプライアンスを入力する

入力する。

Skills Beta Testingに登録する

Echoと紐付いているAmazonアカウントのメールアドレスを登録します。
メールがくるので、JP Customersというリンクをクリックします。

スキル有効化

最後にAlexaアプリからスキルを有効化します。

最後に

内容的にも公開する予定がないものなので、Skills Beta Testingで動かせたので一旦終了。

これで「Alexa、アイアールキットでテレビをつけて」で動くようになりました。

Alexa + IFTTT + IRKitを使って家電を操作する

Echo dotがやっと届いたので、試してみました。

まずはAlexa(Echo dot) -> IFTTT(webhooks) -> IRKitで家電を操作してみました。
プログラミング不要でIFTTTの設定を行うだけなので簡単です。

Alexa、IFTTT、IRKitは設定済みの前提で書いてます。

設定が終われば、「Alexa テレビをつける をトリガー」と話しかけると、テレビをつけることができるようになります。

IFTTTで新しいAppletを作成します

トリガー

Alexaの「Say a specific phrase」をトリガーとして作成します。

「What phrase?」には呼びかける定型文を入力します。
f:id:yamano3201:20180206143947p:plain

※「テレビ」ではうまく認識されなかったので、「テレビをつける」としています。

アクション

Webhooksの「Make a web request」をアクションとして作成します。

以下の値を入力します。

  • URL
  • Method
    • POST
  • Content Type
    • application/x-www-form-unlencoded
  • Body
    • clientkey=XXXXXX&deviceid=XXXXXX&message={"format":"raw","freq":XX,"data":[XXX,XXX,]}

※「clientkey」「deviceid」「message」は事前に確認しておきましょう。http://getirkit.com

最後に

定型文と少しでも異なるように話しかけたり、トリガーって言わなければならなかったりが気になります。
Alexa Skills Kit、Alexa Voice Serviceを使えば解決できるみたいなので、少し触ってみたいと思います。