awsに関するletitrideのブックマーク (17)

  • Serverless連載1: SAMを使ったローカルテスト(Go編) | フューチャー技術ブログ

    サーバレス連載 の第1弾です。 はじめにこんにちは、TIG/DXチームの栗田です。AWSLambdaに代表されるサーバレスアプリは実行時のみ稼働するため、サーバー稼働によるあらゆるコストから解放され、システム開発の工数を減らすことができます。例えば何らかのAPIを提供する場合でも、API GatewayLambdaを組み合わせることで提供可能です。 一方で、サーバーレスアプリを開発するとき、ローカルでのテストが課題となります。例えばLambda + DynamoDBであれば、先の連載の手法を参考に、テストコードを書くことで解決します。一方で… API GatewayからLambdaの着火もテストした上でDynamoDBまで書き込ませたい なんならAPI Gaweway自体もLambdaで叩きたい となると、少々ハードルがあがります。この問題を解決してくれるのが、AWS Serverle

    Serverless連載1: SAMを使ったローカルテスト(Go編) | フューチャー技術ブログ
    letitride
    letitride 2020/06/28
    Dockerのネットワークを作成することでローカルLambdaを検証できる
  • AWS LambdaからDynamoDBをQueryする - 銀の弾丸

    photo credit: Violet electric lightning versus turquoise storm - 09072012 via photopin (license) JavaScript(Node.js)で記述した AWS Lambda から AWS-SDK を使って DynamoDBのテーブルをQueryするサンプルコードをご紹介。 ところでAWSAPIのリファレンスって検索しにくいですよねえ。 Lambdaがいろんな言語に対応しているため、REST APIと各言語向けの説明が別れていてチュートリアルも検索結果にたくさん出てきます。 ※ 記事ではDynamoDBのQueryするときのパラメータを説明します。 関連する記事として、検索条件を入力してQueryパラメータを生成するWebアプリは以下になります。合わせて参照してみてください。 takamints.

    AWS LambdaからDynamoDBをQueryする - 銀の弾丸
    letitride
    letitride 2020/06/20
    DynamoDBでQuery & FilterExpressionを調べてた時にたどり着いた記事
  • AWS SAMを使う前にCloudFormationテンプレートを書こう - Qiita

    はじめに AWSでサーバレスの開発をするにはSAMを使うという記事や話を聞いたことがある人は多いと思います。じゃあ、自分もSAMでやってみようと思ってやってはみたものの、SAMのテンプレートが書けない!って挫折した人が少なからずいると思います。私もその一人でした。おそらく、そのような人は、AWS CloudFormation のテンプレートを書いたことがない人だと思います。 実は、SAMのテンプレートは、CloudFormationテンプレートの拡張です。AWS SAM Template Basicsに、このように書かれています。 AWS SAM templates are an extension of AWS CloudFormation templates. That is, any resource that you can declare in an AWS CloudForma

    AWS SAMを使う前にCloudFormationテンプレートを書こう - Qiita
  • AWS Kinesis を使った Lambda 並行実行検証 - Qiita

    Kinesisを使うと、例えばデータファイルを行毎にストリームとして流すことが可能です。 またKinesisをLambdaトリガーとして使うことで、後続処理をLambdaで作ることができます。 アップロード テストとして、以下のLambdaFunctionを作成し、10,000件のデータファイルを流してみました。 1行あたりのデータ量は、平均で2KiB程度です。 Lambda Function import boto3 import urllib.parse s3 = boto3.resource('s3', aws_access_key_id='XXXXXXXXXX', aws_secret_access_key='XXXXXXXXXXXXXXXXXXXXXXXXX', region_name='ap-northeast-1' ) kinesis = boto3.client('kine

    AWS Kinesis を使った Lambda 並行実行検証 - Qiita
    letitride
    letitride 2020/06/17
    KinesisをイベントリソースとしたLambdaはシャード単位で1秒間隔で非同期並列で起動するのではなく、シャード単位でシリアライズでコンテナが起動するっぽい
  • [Kinesis Data Streams] ストリームを挟んでS3に一覧ログを記録してみました | DevelopersIO

    1 はじめに CX事業部の平内(SIN)です。 処理ごとに蓄積される「一覧(ログ)ファイルを、リアルタイムにS3上に作成する」というニーズに対して、昨日、下記のようなブログを書きました。 これに対して、社内から、このような要件なら、「FIFOなSQSより、KinesisでSequenceで管理した方がLambdaも入れやすいし使い勝手は良さそうな気がします。」という貴重なアドバイスを頂いたので、やってみました。 注意:今回も、S3の「結果整合性」の制約下で完全な「排他制御」が出来たわけではありませんので・・・「それでも!」という方は、読み進めて頂ければ嬉しいです。 2 Kinesis Data Streams Kinesis Data Streamsを log-sample-stream という名前で作成しました。 ストリームを処理するタスクの同時実行を制限するために、シャードを1に設定

    [Kinesis Data Streams] ストリームを挟んでS3に一覧ログを記録してみました | DevelopersIO
    letitride
    letitride 2020/06/17
    S3の読み書きに関しての料金は気にしなくていいんだろうけど、KinesisイベントリソースのLambdaの処理が遅延するとログロストしそうなんだけど、そんなことはないのかな...
  • Kinesis Producer Library(KPL)とfluentdとLambdaを連携してKinesisのスループットを上げる | DevelopersIO

    Kinesis Producer Library(KPL)とfluentdとLambdaを連携してKinesisのスループットを上げる 2016/06/03(金)のAWS Summit Tokyo 2016でクックパッド株式会社の星さんが「秒間数万のログをいい感じにするアーキテクチャ」という発表をされました。 クックパッドのログ収集基盤が Fluentd や Amazon Kinesis Streams や Redshift を活用していい感じするアーキテクチャが参考になった方は非常に多いと思います(あの規模のサービスに関わるかはともかく)。 発表の中でKinesis Producer Library(以下 KPL)を使ってログ数多すぎ問題を解決したことが語られていました。 個人的には、Kinesis Streams のシャード数を増やせばどうにかなるレベルのサービスしか担当したことがない

    Kinesis Producer Library(KPL)とfluentdとLambdaを連携してKinesisのスループットを上げる | DevelopersIO
  • ストリームデータ処理サービスAmazon Kinesisについて調べた結果 - 夢とガラクタの集積場

    こんにちは。 最近ストリームデータ処理サービスであるAmazon Kinesisのドキュメントを読んだり、 クライアントコードのソースを読んだり、実際の小さいアプリケーションを作ったりしたのですが、 その際にわかったことをとりあえずまとめておこうと思います。 1.Amazon Kinesisとは?(http://aws.amazon.com/jp/kinesis/) ・Amazon Kinesis は、大規模なストリーミングデータをリアルタイムで処理する完全マネージド型サービス ・大容量のストリームデータを受信し、提供することができる 2.Kinesisの構造(http://docs.aws.amazon.com/kinesis/latest/dev/introduction.html) ・Kinesisの実態は「大規模でスケール可能、メッセージが一定時間保存されるPubSub型キュー」

    ストリームデータ処理サービスAmazon Kinesisについて調べた結果 - 夢とガラクタの集積場
  • [詳説] Kinesis Client Library for Java によるコンシューマアプリケーションの実装

    はじめに Kinesis Client Library(以下、KCL) は、AWS Kinesis Data Stream に流れるデータ(レコード)を受信して処理を行うコンシューマアプリケーションを実装するためのAWS謹製のライブラリです。 Kinesisのレコードを処理するには、 Kinesisストリームからレコードを取得して処理するアプリケーション。EC2などの上で常駐させます。 Kinesisストリームをイベントソースとする Lambda 関数。 のいずれかの方法がありますが、KCL は前者の場合に使用します。 KCL はKinesisストリームからレコードを取得し、レコードプロセッサ と呼ばれるレコードを処理するためのハンドラを呼び出します。 アプリケーションの開発者はこの レコードプロセッサ に処理を実装するだけで良く、レコードの取得、どのレコードまで処理したかの状態、Kine

    [詳説] Kinesis Client Library for Java によるコンシューマアプリケーションの実装
  • Kinesis Client Library – テクニカルタイムアウト

    マルチスレッド処理 AWSが公開しているKinesis Client Library(KCL)のサンプルプログラムでは、取得した各レコードをシングルスレッドで順次処理している。しかしこれでは、前のRecord処理が終了しないと次のRecord処理が実行できないため、Kinesis Client LibraryのDEFAULT_MAX_RECORDの値を上げたとしても性能が十分出ない。 そこで、Record処理を単純にRunnaleなどでマルチスレッド化してしまうとスレッド数が制御できなくなり、例えばKinesis Recordから取得したデータをDynamoDBに順次書き込むという制御を記述していた場合は、 com.amazonaws.http.AmazonHttpClient executeHelper INFO: Unable to execute HTTP request: Time

  • AWS Kinesis(1)Kinesisの概要 – テクニカルタイムアウト

    レコードを取得(GetRecords)する際には、レコード毎に付与されたシーケンス番号がキーとなる。シーケンス番号は、シャード単位で管理されており、レコードを入力(PutRecords)した際にシャードごとにインクリメントされる。したがって、シーケンス番号順に取得するということは、すなわち各シャードに入力されたレコードを時系列順に取得するということと等しい。 ただし、シーケンス番号はシャード単位で管理されているため、1つのKinesis Client Libraryが、複数のシャードから同時にレコードを取得した場合などは、複数シャードのレコードが混在して取得されることから、取得データが時系列順に並ぶとは限らない。また、シャードへのデータ入力処理は並列で実施されるために、シャードへレコードが同時に入力された場合には、シーケンス番号が意図した通りにインクリメントされるとは限らない。レコード入力

    letitride
    letitride 2020/06/16
    “Kinesis Client Libraryが、複数のシャードから同時にレコードを取得した場合などは、複数シャードのレコードが混在して取得されることから、取得データが時系列順に並ぶとは限らない”
  • AWS Kinesis Stream を大規模データで検証してわかったことの事例紹介

    10分間で数億件を超えるIoT関連のデータをストリーム処理するためのPoC(概念実証)をする機会がありました。そこで経験をしてハマったことなど一部事例として紹介します。 検証の概要 まずは、何のために検証しようとしたかというと... IoT機器からKinesis Streamを通して大量のメッセージを受け取り、分散処理で関連付け処理を検証します。 実証検証の目的としては アーキテクチャ構成の妥当性を検証し コスト軽減のポイントを把握 運用に向けた課題を洗い出す としました。 データと要件の特性 今回の検証用データは自前で生成し投入する必要があり、結構なデータ量となります。 トラフィック量 およそ数十万件/秒(数億件/10分) 時間帯によってバースト(スパイク)が存在する メッセージの関連付け処理を行うが、いつ終点メッセージが届くかわからない。 数分後には処理結果を利用したいのでバッチでは実

    AWS Kinesis Stream を大規模データで検証してわかったことの事例紹介
  • Amazon で Amazon Kinesis Data Streams サービスをモニタリングする CloudWatch - Amazon Kinesis Data Streams

    翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。 AmazonAmazon Kinesis Data Streams サービスをモニタリングする CloudWatch Amazon Kinesis Data Streams と Amazon CloudWatch は統合されているため、Kinesis データストリームのメトリクスを収集、表示、分析 CloudWatchできます。たとえば、シャードの使用状況の追跡に、IncomingBytes メトリクス OutgoingBytes とメトリクスをモニタリングし、ストリーム内のシャードカウントと比較できます。 設定したストリームメトリクスとシャードレベルのメトリクスは自動的に収集され、1 分 CloudWatch ごとに にプッシュされます。2 週間分のメトリク

    letitride
    letitride 2020/06/13
    cloudwatchが取得できるkinesisのメトリクス
  • AmazonCognitoでGoogle/Facebook認証してトークンを取得する - Qiita

    はじめに 普段からWebアプリケーションにログイン機能を実装する際、バックエンドにAmazonCognitoを利用してきました。 Cognitoはログイン認証をサーバレスに実現してくれるマネージドなサービスです。開発者はログインユーザの情報を管理する必要が(ほとんど)ありません。 またAWSのリソースへのアクセス権限を一時的に発行することもできるので、ログイン後のトークンを利用して、アプリケーションからAWSの各リソースを利用することができます。 今回はそんなCognitoの外部IDプロバイダ認証を利用してログインし、トークンを取得するまでの流れをGoogleとFacebookでやっていこうと思います。 Cognitoの準備 Cognitoのデプロイ AmplifyCLIを利用してサクッと作っていきます。フロントはVue.jsを使っています。 この記事を参考にしていただければ、Cognit

    AmazonCognitoでGoogle/Facebook認証してトークンを取得する - Qiita
    letitride
    letitride 2020/04/13
    VueでCognito認証
  • S3のアクセスコントロールが多すぎて訳が解らないので整理してみる | DevelopersIO

    おまけ 今回調査に使ったシェルスクリプト載せておきます。 権限毎にバケット何個も作って、オブジェクトも作って、アクセスしてみて、終わったら削除してという感じのものです。 #!/bin/bash UNIQ=$(date +'%Y%m%d%I%M%S') alias aws='aws --region ap-northeast-1' BUCKET_PREFIX=akeri-acl-test-$UNIQ- TARGET_PRINCIPAL="arn:aws:iam::123456789012:user/s3acltest" TARGET_MAIL="example@example.com" # create Bucket Policy Document UPLOADFILE=akeridayo.txt IAM_USERNAME=s3acltest echo "akeridayo" > $UPLO

    S3のアクセスコントロールが多すぎて訳が解らないので整理してみる | DevelopersIO
    letitride
    letitride 2020/02/06
    S3のアクセス制御
  • AWS NAT構成の作り方(NATゲートウェイ編) - Qiita

    AWSでのNAT接続を実現する方法を備忘を兼ねて記載。 NATインスタンス編はこちら NAT構成の必要性 簡単にいうと、 インターネットから接続される必要のないインスタンスについて、 インターネットからの接続を遮断しつつ、 自身はインターネットに接続を出来るようにするため。 外部から接続される危険性を減らすことと、 ライブラリの取得などで必要になる外部への接続の両立が可能となる。 参考 シナリオ 2: パブリックサブネットとプライベートサブネットを持つ VPC(NAT) http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Scenario2.html NATゲートウェイ http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/vpc-nat-gatew

    AWS NAT構成の作り方(NATゲートウェイ編) - Qiita
  • AWSでセキュアなWebサーバを構築する - Qiita

    はじめに セキュアな構成とは WebサーバやDBサーバを直接インターネットに公開しない。 パブリックとプライベートでサブネットを分割する。 パブリック・プライベート共に、特定のポートのみインバウンドを受け付ける。 プライベートサブネットは特定のサブネットからのみインバウンドを受け付ける。 踏み台サーバは必要な時のみ存在(起動)している。 今回の想定 試しに構築するだけなので、インスタンスは最小サイズを使用する。 おおまかな手順 リージョンの変更 VPCの構築 パブリックサブネットの構築 サブネットの構築 インターネットゲートウェイの構築 ルートテーブルの構築 プライベートサブネットの構築 サブネットの構築 NATインスタンスの構築 Elastic IPの割り当てと関連付け ルートテーブルの構築 Auto Scaling Groupのための前準備 プライベートサブネットにEC2インスタンス(

    AWSでセキュアなWebサーバを構築する - Qiita
    letitride
    letitride 2020/02/05
    AWS VPC内の基本的なインスタンス構築の手順。網羅的にまとまっている。
  • [AWS] VPC、サブネット、セキュリティグループまとめ - Qiita

    サブネットはVPC内部につくるアドレスレンジ VPCに設定したCIDRブロックの範囲に収まる小さなCIDRブロックを割り当てることができる(CIDRブロックのサイズはVPCと同様に16ビットから28ビットまで) 個々のサブネットには1つの仮想ルータがあり、このルータがルートテーブルとネットワークACLの設定を持っており、サブネット内のEC2インスタンスのデフォルトゲートウェイになっている [注意] 1. サブネットの最初の4つおよび最後の1つのアドレスは予約されていて、使用できない 2. 必要以上にサブネットを分割することはアドレスの浪費につながる 3. パブリックサブネットやプライベートサブネットという表現がされることがあるが、インターネットゲートウェイ・ルートテーブル・ネットワークACLなどを利用して、そのような役割を割り当てているだけ セキュリティグループはEC2など、インスタンス単

    [AWS] VPC、サブネット、セキュリティグループまとめ - Qiita
    letitride
    letitride 2020/02/05
    AWSのVPCネットワークについて
  • 1