ブックマーク / dev.classmethod.jp (29)

  • Cognitoで電話番号・メールアドレス変更時、前の値を保持できるようになりました | DevelopersIO

    こんにちは。データアナリティクス事業部 サービスソリューション部の北川です。 今回は、Cognitoで新しく追加された「属性変更の確認」を試してみたいと思います。この機能によって、メールアドレスや電話番号変更時に変更前の値を保持できるようになります。 Cognitoでメールアドレス変更時の問題 Cognitoでは、メールアドレスの変更(updateUserAttributes)を実行すると、コード検証を行う前に、実行したタイミングでメールアドレスが切り替わってしまうという問題がありました。 Github上でも、かなり前からこの問題に対して議論されていたようです。 内容を見て分かる通り、今回、その問題を解消するための機能が追加されました。 属性の変更の確認というタイトルの新しいセクションがAmazonCognitoコンソールに追加されました。この機能をアクティブにすると、更新が保留されてい

    Cognitoで電話番号・メールアドレス変更時、前の値を保持できるようになりました | DevelopersIO
  • [GraphQL] N+1問題を解決するDataLoaderの仕組みとサンプル実装 | DevelopersIO

    Apollo ServerにDataLoaderを組み込んでみる 簡単なサンプルプロジェクトで実際の動作を確認してみます。プロジェクト構成などは以前の記事をご参照ください。記事ではDataLoaderに関係する箇所を中心に記載します。 https://dev.classmethod.jp/articles/apollo-server-restdatasource-and-cache/ Schema定義 以下のスキーマを定義します。books Queryからスタートして、author→books→author→...とノードをループすることができます。 type Book { title: String author: Author } type Author { name: String books: [Book] } type Query { books: [Book] } Resol

    [GraphQL] N+1問題を解決するDataLoaderの仕組みとサンプル実装 | DevelopersIO
  • Google Cloudなんもわからないマンが、Cloud Runの凄さをあれこれ調べてみた | DevelopersIO

    この記事はクラスメソッド Google Cloud Advent Calendar 2021の9日目の記事です。 Google Cloud自体ナンもわからないマンが、以前から気になっていたCloud Runをあれこれ動かしながら学んでみた様子をお届けします。もともとAWSのApp Runnerがお気に入りのサービスだったので、それとの機能上の違いも入れています。 (祭) ∧ ∧ Y  ( ゚Д゚) Φ[_ソ__y_l〉     Cloud Run祭りダワッショイ |_|_| し'´J 注意事項:この記事には両者のサービスの優劣をつける意図は全くありません そもそも、違うプラットフォームに存在するサービスを単独で機能比較して優劣がはっきり出るほど、パブリッククラウドは単純なものではありません。AWSGoogle Cloudもサービス単体で利用するよりは、そのエコシステムの中でビルディング

    Google Cloudなんもわからないマンが、Cloud Runの凄さをあれこれ調べてみた | DevelopersIO
  • Google Cloud:Mac BookにTerraformをインストールしてみた | DevelopersIO

    IaC(Infrastructure as Code)の必要性 企業でGoogle Cloudを使用しインフラを構築するにあたりCloudコンソールからポチポチと行う方法とCloud Development ManagerというGoogle Cloud独自の構築方法、そして今回インストールするTerraformがあります。 今回、なぜTerraformを選定したかというと、Google以外のクラウドでも汎用的に構築でき、さらに昨年の夏頃に発表されたCDK for TerraformJavaを使いGCP環境をデプロイしてみたかったからです。(Javaは基コードのみ知っているだけなのでレベルを上げたいなと思った) 今後、それをブログにするかわかりませんし、今回の情報も既知情報かと思いますが、他のブログなど見てわかりにくかった箇所があるので備忘録も兼ねてブログにしたいと思います。 今回の手順

    Google Cloud:Mac BookにTerraformをインストールしてみた | DevelopersIO
  • 【初心者向け】MacにTerraform環境を導入してみた | DevelopersIO

    MacへのTerraform環境導入として、tfenvとgit-secretsの設定方法をまとめました。 こんにちは!コンサル部のinomaso(@inomasosan)です。 AWS環境構築でTerraformを入社前から使用していたのですが、改めて新規環境を導入した際に意外と手こずってしまったので、備忘も兼ねてブログに手順を残すことにしました。 環境 macOS Catalina 10.15.7 Homebrew 2.7.3 tfenv設定 tfenvはTerraformのバージョンマネージャーです。 Terraformは頻繁にアップデートがあるため、バージョンを簡単に切り替えられるようにします。 1. tfenvインストール Homebrewでtfenvをインストールします。 % brew install tfenv インストール後に、バージョン確認してみましょう。 % tfenv

    【初心者向け】MacにTerraform環境を導入してみた | DevelopersIO
  • OpenAI DevDayで発表された様々な機能について、公式ドキュメントを見ながら少しだけ詳細を確認してみた | DevelopersIO

    コンテキスト長が長くなり、学習データも最新化、さらに価格も下がっていますので、Previewではなくなるのが待ち遠しいですね。 詳細は以下も参照ください。 Models / GPT-4 and GPT-4 Turbo - OpenAI API 試してみた 少しだけPythonで試してみようと思います。 実行前にopenaiモジュールも日1.0.0がリリースされているようですので、事前にアップデートしてください。 openai · PyPI 簡単なクエリを試してみます。 from openai import OpenAI # APIキーの発行方法は以下を参照 # https://dev.classmethod.jp/articles/openai-api-quickstart-tutorial/ client = OpenAI( api_key = "ここにOpenAI APIキーを記載"

    OpenAI DevDayで発表された様々な機能について、公式ドキュメントを見ながら少しだけ詳細を確認してみた | DevelopersIO
  • Googleドライブの「共有ドライブ」の共有の設定についてまとめてみた | DevelopersIO

    Google WorkspaceでGoogleドライブを業務利用している場合、個人で利用する「マイドライブ」のほかに、 チーム間で共有する「共有ドライブ」を利用できます。この共有ドライブでの共有の制御については、複数の箇所で設定を行うため、 慣れていないと複雑に感じるかもしれません。 ということで、どのように共有を制御するのか、それはどこで設定するのか、という点を簡単にまとめてみたいと思います。 そもそも:Googleドライブの「共有ドライブ」とは 共有ドライブ(Shared Drive)は、上述のとおりチーム、すなわち複数のユーザー間でファイルを共有するためのドライブです。 共有ドライブ内のファイルは、個人ではなくチームが所有する扱いとなります。 チームのメンバー(=共有するユーザー)は、共有ドライブのルートで登録できるほか、現在では配下のフォルダ・ファイル単位でも追加が可能です。 詳し

    Googleドライブの「共有ドライブ」の共有の設定についてまとめてみた | DevelopersIO
  • [AWS CDK] 発行したIAMアクセスキーがスタックの再デプロイ時に変更されないのか確認してみた | DevelopersIO

    こんにちは、CX事業部の若槻です。 AWS上に構築したシステムを外部サービスと連携する時はAWSでIAMユーザーのアクセスキーを発行することが多いですが、このIAMアクセスキーの作成は手動で行うと手数が多くなかなか手間が掛かり、また数が増えすぎると管理も大変になります。 そこで「IAMアクセスキーについても他のリソースと同様にAWS CDKで管理できないか?」と考えたのですが、その際にCDKスタックの再デプロイ時にアクセスキーの値が変更されてしまわないか?という懸念があり、今回実際に確認してみました。 確認してみた スタック初回デプロイ 発行したアクセスキーのIDとシークレットをAWS System ManagerのパラメータストアにString形式で格納しています。 import * as cdk from "@aws-cdk/core"; import * as iam from "

    [AWS CDK] 発行したIAMアクセスキーがスタックの再デプロイ時に変更されないのか確認してみた | DevelopersIO
    ryosuke-fujii
    ryosuke-fujii 2023/09/23
    「CDKではStringまたはStringList形式での格納にしか対応していないようです」
  • AWS CDKでAWS Systems Manager パラメータストア及びAWS Secrets Managerからパラメータを取り込む方法 | DevelopersIO

    valueFromLookup このメソッドを使うと生成するテンプレートにパラメータストアに格納されていたStringを転記します。テンプレートに転記する為、SecureStringに対して使用する事ができません。SecureStringに対して使用できてしまうと、CloudFormationに対する読み取り権限があれば誰でもテンプレートを閲覧する事で内容を確認できてしまいます。Stringに対してパラメータストアの階層構造などで権限管理している場合、その管理から外れて閲覧できるユーザーが発生しうるので注意が必要です。 パラメータのバージョンはlatestに強制されます。 実は、SecureStringに対して使用する事は出来ますが、暗号化されたままの文字列で取り出されるので使い道はありません。 import { Construct, RemovalPolicy, Stack, Stack

    AWS CDKでAWS Systems Manager パラメータストア及びAWS Secrets Managerからパラメータを取り込む方法 | DevelopersIO
    ryosuke-fujii
    ryosuke-fujii 2023/09/23
    ParameterStoreよりSecretManagerですべて管理するのがよさそう
  • AWS WAFでSQLインジェクションをブロックしてみた | DevelopersIO

    はじめに こちらの記事でご紹介したSQLインジェクション脆弱性を持つWebサイトを用意し、AWS WAFで攻撃をブロックしてみました。 CloudFront ディストリビューションの作成 Webディストリビューションを作成します。 試験サイトではHTMLフォームでPOSTを使います。 Allowed HTTP Methodsにて、GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETEを選択します。 CloudFront経由で接続可能なことを確認します。 試験サイトでは、ユーザ名とパスワードを入力することでそのユーザーのメールアドレスを表示します。 パスワードに' OR 'A' = 'Aを指定すると、全てのユーザーのメールアドレスが表示されます。 SQLが意図せず成立し、他のユーザの情報が流出した状況が再現されました。 AWS WAFを設定してみる Get

    AWS WAFでSQLインジェクションをブロックしてみた | DevelopersIO
  • cdk コマンドの機能を 実際に叩いて理解する 【 AWS CDK Command Line Interface 】 | DevelopersIO

    AWS CDK は便利なコマンドやオプションがたくさんあるので、ぜひつかいこなしたいですね。実際に叩いてみるのが一番です。記事ではまず AWS CDK のコマンドラインツールについて一覧を確認し、その後コマンドをそれぞれ実際に叩いてみて動作を確認します。コマンドの使いどころや意味の把握の助けにしてください。 バージョン情報 AWS CDK は頻繁にバージョンアップが行われていますので、バージョンについてはご注意ください。 ツール バージョン

    cdk コマンドの機能を 実際に叩いて理解する 【 AWS CDK Command Line Interface 】 | DevelopersIO
  • 実践!AWS CDK #27 スタック分割 | DevelopersIO

    はじめに 今回はスタックの分割方法を紹介します。 CFn で言うと クロススタックの参照 と呼ばれる機能を CDK で実現します。 [参考]:Stacks | AWS CDK v2 Developer Guide 前回の記事はこちら。 スタック分割のメリット スタックを分割することのメリットは一言でいうと 管理がしやすくなる です。 共通のライフサイクルやリソースでグルーピングできるため、他のスタックに影響を与えることなく目的のリソースを作成・更新することができます。このため複数のメンバーでスタックを作成・変更する場合もコンフリクトが発生しづらくなります。また、単一スタックだとデプロイ時にエラーが発生した場合はすべてのリソースがロールバックされてしまいますが、スタックを分割しておけばロールバックもスタック単位となります。 [参考]:ライフサイクルと所有権によるスタックの整理 | AWS C

    実践!AWS CDK #27 スタック分割 | DevelopersIO
    ryosuke-fujii
    ryosuke-fujii 2023/08/19
    単一スタックだとデプロイ時にエラーが発生した場合はすべてのリソースがロールバックされてしまいますが、スタックを分割しておけばロールバックもスタック単位となります。
  • 【衝撃】AWSのRDSがデータを失わないBlue/Greenデプロイに対応しました #reinvent | DevelopersIO

    「最近は、データベースもB/Gデプロイできるらしいよ?」 「そりゃそうやろ。B/Gデプロイなんて、最近当たり前……… へ?DBが?無理でしょ?ほぇ?どういうこと?」 最初アップデートのタイトルを見たときの、ハマコーの率直な感想です。 Blue/Greenデプロイは、現行バージョンのトラフィックを活かしたまま新バージョンを動作確認し、問題なければ新バージョンをリリースするという、最近の安全なデプロイの概念において無くてはならないものです。 同時に新旧バージョンを稼働させるため、基的にはステートレスなアプリケーション・サーバーにおいて利用するものという固定概念があったのですが、それをデータベースに対して既存のAWS技術を組み合わせつつAWSらしいマネージドな仕組みで解決しようという、意欲的なリリースです。制約事項もそれなりにあるので、皆さんの運用ワークロードに当てはまるかは、事前の検証が必

    【衝撃】AWSのRDSがデータを失わないBlue/Greenデプロイに対応しました #reinvent | DevelopersIO
  • CloudflareのR2ストレージ | DevelopersIO

    昨年(21年度)、セキュリティやCDNサービスで有名なCloudflare社からいくつかの新しいサービスの発表がありました。この発表はIT業界だけではなくCloudflare社の株価まで急激に成長させる影響を与える、熱い内容でした特にその中でAWSのS3のようなR2というストレージサービスが注目されました。まだ開発中のサービスですので軽く意識しただけでもいいと思います。 R2の意味 R2はその名前から面白いですね。S3と比較して、アルファベット順に並べるとRはSの前に、数字としても2は3の前です。自らS3より良いサービスと言ってますが、ただS3より前にあるという意味ではないです。(次のObjectStorageはQ1, P0ですよね) CloudflareCEOはR2の理由について、R2はS3の一番悪い問題点を抜いた(It's S3 minus the one most annoying

    CloudflareのR2ストレージ | DevelopersIO
    ryosuke-fujii
    ryosuke-fujii 2023/06/20
    データ転送量無料すごい
  • え、そんなに!?意外と知らないAWSでお金がかかるポイント5選!! | DevelopersIO

    「でかいインスタンスを建てればAWSの料金が高くなっていく…。」 「大量購入すればお金が飛んでいく…。」 こんにちは(U・ω・U) AWS事業部の深澤です。 おそらく皆さん、上記のようなお話はご存知かと思います。弊社のエンジニアにもカジュアルに「AWSお金いっぱい溶かすならどうしますか?」と聞いたところ、「リザーブドインスタンスをまとめ買いする」と即答されました。 しかしAWSには豊富なサービスがあり、料金の掛かり方も多様です。使い方を一歩間違えるとお金がどんどん溶けていくと行った事態になりかねません。そこで、今回は意外と気が付かない料金を調査したのでまとめてみました! 注意 今回ご紹介するものは実際に検証したものではありません。AWSの料金表を確認して、実際このくらい溶けるのではと計算した理論値になります。 日円のレートは執筆時現在のレートとなります。 リージョンは東京です。 それぞ

    え、そんなに!?意外と知らないAWSでお金がかかるポイント5選!! | DevelopersIO
    ryosuke-fujii
    ryosuke-fujii 2023/06/20
    CloudFront、無料枠以降のデータ転送量が0.114 USD/1GBって高くねーか。。
  • AWSのアウトバウンド通信はとりあえずCloudFrontを挟んだ方が安くなる(場合がある) | DevelopersIO

    「実は動的コンテンツとか静的コンテンツとか深く考えずにCloudFrontを挟んだ方が安くなるのでは」と思い、計算してみたところ良さげだったのでご紹介します。 ども、もこ@札幌オフィスです。 AWSの通信利用料を調べる機会があり、アウトバウンド通信のコスト削減をするために試行錯誤していたのですが、「実は動的コンテンツとか静的コンテンツとか深く考えずにCloudFrontを挟んだ方が安くなるのでは」と思い、計算してみたところ良さげだったので、簡単な内容とはなりますがご紹介します。 ※記事でのアウトバウンドとはCloudFrontを経由出来る通信の事であり、EC2からどこかへファイルをアップロードするなどの通信は対象外となりますのでご注意ください。 TL;DR EC2、ELB、S3のインターネットへのアウトバウンド通信は $0.114〜$0.084 per 1GB ※1 EC2、ELB、S3

    AWSのアウトバウンド通信はとりあえずCloudFrontを挟んだ方が安くなる(場合がある) | DevelopersIO
  • CloudFormationでIAMアクセスキーの発行とSecrets Managerへの格納をしてみた | DevelopersIO

    こんにちは、CX事業部 IoT事業部の若槻です。 今回は、CloudFormationでIAMアクセスキーの発行とSecrets Managerへの格納をしてみました。 なぜCloudFormationとSecrets Managerなのか? (主観ですが)AWSのIaC機能は下記の2つです。 AWS CLoudFormation AWS CDK また、AWSのセキュアなパラメータ管理機能は主に下記の2つです。 AWS Systems Manager Parameter Store(SecureStringを使用) AWS Secrets Manager このうち、IAMアクセスキーの発行とそのクレデンシャルの格納をIaCで完結させられる方法は、調べてみたところ「CloudFormationとSecrets Managerの組み合わせのみ」だったため、今回その方法についてご紹介します。ま

    CloudFormationでIAMアクセスキーの発行とSecrets Managerへの格納をしてみた | DevelopersIO
  • [アップデート] 実行中のコンテナに乗り込んでコマンドを実行できる「ECS Exec」が公開されました | DevelopersIO

    もう、コンテナ調査のためにEC2に乗り込む必要は無い! もう、Fargateだからコンテナの状況が見れないと悩むこともない! ECS開発者待望の機能がリリースされました! みなさん、こんにちは! AWS事業部の青柳@福岡オフィスです。 Amazon Elastic Container Service (ECS) において、実行中のコンテナに乗り込んでコマンドを実行できる機能「ECS Exec」が公開されました。 Amazon ECS now allows you to execute commands in a container running on Amazon EC2 or AWS Fargate どんなものなのか、早速使ってみたいと思います。 これまでの方法 デバッグやトラブルシューティングを行うために、実行中のコンテナに乗り込んでコマンドを実行したいという時があると思います。

    [アップデート] 実行中のコンテナに乗り込んでコマンドを実行できる「ECS Exec」が公開されました | DevelopersIO
  • [MinIO]boto3で操作可能なS3互換ストレージをローカル上にDocker Composeで立てる方法 | DevelopersIO

    t_o_dと申します。 AWSを利用しているとS3に格納しているデータをPython(boto3)で読み取り処理を行うケースは多いです。 非常に便利な反面、お金や権限の問題で開発時の気軽な実行は躊躇ってしまいます。 今回はboto3で操作可能なS3互換ストレージであるMinIOをローカル上にDocker Composeで立てる方法を記録いたします。 はじめに 記事では以下を行います。 MinIO環境の構築 MinIOクライアント(mc)環境の構築 boto3での動作確認 なおMinIOやMinIOクライアントの詳細な操作方法等は割愛いたします。 環境 mac OS Monterey 12.6 Docker 20.10.14 Docker Compose 2.4.1 Python 3.10.8 手順 MinIO環境の構築 まずファイル群を入れるためのディレクトリを任意で作成します。 mkd

    [MinIO]boto3で操作可能なS3互換ストレージをローカル上にDocker Composeで立てる方法 | DevelopersIO
    ryosuke-fujii
    ryosuke-fujii 2023/03/15
    S3互換のローカルストレージ。
  • TypeScriptのesModuleinteropフラグを設定してCommonJSモジュールを実行可能とする | DevelopersIO

    こんにちは、CX事業部 IoT事業部の若槻です。 今回は、TypeScriptでのCommonJSなモジュールの実行のエラーを、esModuleinteropフラグの設定により回避できたので、書き残しておきます。 事象 snakecase-keysを使ってオブジェクトのキーをスネークケースに変換するスクリプトを作成しました。 import snakecaseKeys from 'snakecase-keys'; const camel = { aaaBbb: 'ccc', dddEdd: 'fff' }; const snake = snakecaseKeys(camel); console.log(snake); しかしこのスクリプトを実行するとエラーとなってしまいます。 $ npx ts-node script.ts Need to install the following pac

    TypeScriptのesModuleinteropフラグを設定してCommonJSモジュールを実行可能とする | DevelopersIO
    ryosuke-fujii
    ryosuke-fujii 2023/03/05
    import express from "express";でcan only be default-imported using the esModuleInterop flagというエラーがでたので、tsconfigにesModuleInterop: trueをつけたら解消した