5分でAWS SAMに入門する
今までAWSのコンソール上でLambdaを作っていましたが、SAMを試してみたら思ったより便利だったので、入門するための手順を共有します。
ブラックベルトはこちらです。
- Lambdaの構築でSAMを使うメリット
- デメリット
- 少しずつコードを修正しながら検証する、いわゆるスモールスタートの段階ではコンソールを使ったほうが早い
入門
今回は公式が用意しているテンプレートを利用します。
前提
手順その1 公式サイトを参考にAWS SAM CLIをインストールする
手順その2 任意のフォルダ上でsam init
を実行する
対話型でセットアップが始まります。(行数がとても長いので一部省略しています)
You can preselect a particular runtime or package type when using the `sam init` experience. Call `sam init --help` to learn more. Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice: 1 Choose an AWS Quick Start application template 1 - Hello World Example Template: 1 Use the most popular runtime and package type? (Python and zip) [y/N]: N Which runtime would you like to use? 15 - python3.9 Runtime: 15 What package type would you like to use? 1 - Zip 2 - Image Package type: 1 Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: N For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html [y/N]: N Project name [sam-app]: sam-nyumon (後略)
対話したくない人は以下のようにオプションをつけることで一発で作成できます。
sam init --runtime python3.9 --dependency-manager pip --app-template hello-world --name sam-nyumon
手順その3 ビルド&デプロイする
cd sam-nyumon
sam build
sam deploy
以下のようなログが出力されたらデプロイ成功です。
Successfully created/updated stack - sam-nyumon in ap-northeast-1
コンソール上でもLambda関数の作成が確認できるかと思います。
手順その4 実行してみる
Lambdaをローカルで実行するにはDockerが必要なので、起動しておきます。
sam local invoke
以下のログが出力されたら実行成功です。
{"statusCode": 200, "body": "{\"message\": \"hello world\"}"}%
手順その5 リソースを削除する
最後に、作成した関数を削除します。
sam delete
まとめ
sam init
,sam build
,sam deploy
,sam local invoke
の4コマンドを実行するだけで、Lambdaの作成からテストが実行できました。
また、Lambdaの設定を編集したいときはtemplate.yaml
ファイルの中のPropertiesを編集します。以下に、よく使う設定を列記します。
- FunctionName
- 関数名
- 省略可能だがなるべく指定したほうがいい
- Policies
- Lambdaに付与するポリシー
- MemorySize
- メモリサイズ
- Timeout
- タイムアウトするまでの秒数
- Environment
- Events
- Lambdaを起動するイベント、Eventbridgeもここで指定する
例
Resources: SlackTestFunction: Type: AWS::Serverless::Function Properties: FunctionName: "FunctionName" # 関数名 CodeUri: function/ # コードの場所 Handler: app.lambda_handler Runtime: python3.9 Architectures: - x86_64 Policies: # Lambdaに付与するポリシー - arn:aws:iam::****** MemorySize: 1024 # メモリサイズ Timeout: 15 # タイムアウトまでの秒数 Environment: Variables: # 環境変数 TZ: Asia/Tokyo Events: # 関数を実行するイベント schedulename: Type: Schedule Properties: Schedule: "cron(0 22 * * ? *)" # UTC Name: schedule-name Enabled: true Input: | # 関数を実行するときに渡すパラメータ { "key1": "LOVE", "key2": "PHANTOM" }
全ての設定はこちら。 docs.aws.amazon.com
ここまで読んでいただき、ありがとうございました。
【Splunk】searchはログを検索する
searchコマンドの説明を書きます。
以下の記事の派生記事です。
canada-lemon.hatenablog.com
searchはその名の通りログを検索するコマンドです。
SPLを実行するとき、先頭に他のコマンドがない場合は、暗黙的にsearchコマンドが使われています。 例えば、| search index=_internal
と入力してSPLを実行すると、最初のsearch部分が自動的に省略されてindex=_internal
になります。
【Splunk】lookupはExcelのルックアップみたいなことをしてくれる
lookupコマンドの説明を書きます。
以下の記事の派生記事です。
canada-lemon.hatenablog.com
lookupはExcelのルックアップと同じようなことをやってくれるコマンドです。
「ディスプレイの接続が制限される可能性が出ます」という警告が一日後いつの間にか解決した
こんにちは。
私はノートPCと外部モニターの2つを使って、デュアルディスプレイ環境で仕事をしています。
先日、「ディスプレイの接続が制限される可能性が出ます」という警告が唐突に出て、唐突に解決したので、その記録を書きます。
この記事の論旨です
- 今まで外部モニターに問題なく接続できていたが、ある日接続できなくなった
- PCを再起動したり、デバイスマネージャーからドライバーを再インストールしたりしたが効果はなし
- 翌日、使えるようになった
モニターが使えなくなった原因も、使えるようになった原因もわからず、煮え切らない記事となっており恐縮ですが、一例として参考になれば幸いです。
前提条件
私が使っているPCはMicrosoftのSurface Laptop Go
です。
www.microsoft.com
入出力端子はUSB-AとUSB-Cが1つずつで、前者をワイヤレスマウスとの接続、後者をモニターとの接続に使っていました。
職場のモニターの大半がUSB-Cに対応していない都合上、接続するときはHDMIとUSB-Cの変換アダプタを間に挟んでいました。
www.elecom.co.jp
モニターは様々な種類のものを使っていたので具体的な製品名は割愛します。
Surfaceには充電用の端子とSurface Dock 2
という専用のドックがあります。
この充電用端子とドックを使ってモニターに接続することも可能でした。
ドックは会議用のフロアに置いてあるので、普段は使ってませんでしたけどね。
発生事象とやったこと
ある日、PCを立ち上げて変換アダプタとPCを繋ぎ、仕事を始めようとしたところ、以下の警告が出て、モニターが入力を認識しないようになりました。
ディスプレイの接続が制限される可能性があります
エラーメッセージでGoogle検索し、ヒットした記事を参考にして以下の対応を実施しました。
- 普段と違う変換アダプタを使う
- 普段と違うモニターを使う
- PCを再起動する
- モニターの電源プラグを抜き差しして、再接続する
- デバイスマネージャーから、モニターやUSBに関係あるドライバを再インストールする
- 高速スタートアップを無効化する
上述の対応は全て効果がありませんでした。
Windows Updateを確認したところ、最新の状態であり、直近でUpdateした痕跡もないため、こちらが原因の可能性も薄いです。
最後の手段でPCを初期化したりBIOSを弄ったりすることも考えましたが、流石に仕事用のPCでそれをやるのは怖い……。
気付き
色んな対応をやっていく内に、以下の2つのことがわかりました。
Surface Dock 2では、充電用の端子を経由してモニターに接続します。
また、変換アダプタをモニターに接続せず、SurfaceのUSB-C端子と変換アダプタだけを繋いだ場合でも警告が出ます。
以上のことから、被疑箇所はモニターではなく、SurfaceのUSB-C端子ではないか?という疑いを持ちました。
今まで接続できていた組み合わせなので、USBの規格が合っていないという原因は考えにくいですが……。
疑いがあるからといってこれ以上何かできるわけでもありません。
サポートに問い合わせるときにちょっと情報の足しになる程度でしょうか。
その日はSurface Dock 2が空いているときはそれを使い、空いてないときは内蔵モニターだけで仕事をしました。
その後
翌日、PCを起動してダメ元でモニターと繋いでみたところ、なんと接続できました。
再度Windos Updateを確認しましたが、Updateした形跡はありません。
なぜ接続できなくなったのか、なぜ接続できるようになったのかがわからないまま、この不具合は一旦幕を閉じました。
今回の記事では、PCが外部モニターに接続できなくなった事象と、それが解決するまでを書きました。
もし同様の不具合に遭遇された方は、(急ぎじゃないなら)一日待ってみるのも手かもしれません。
ここまで読んでいただき、ありがとうございました。
【Splunk】timechartは時系列の表示に特化する
timechartコマンドの説明を書きます。
以下の記事の派生記事です。
canada-lemon.hatenablog.com
timechartはstatsコマンドの統計処理をベースとしつつ、時系列の表示に特化したコマンドです。