AWSのブログ - TECH PLAY

TECH PLAY

AWS

AWS の技術ブログ

å…š3894ä»¶

この蚘事は、 Automate Ethereum node validator deployment on Amazon EC2 using AWS CDK を翻蚳したものです。 むヌサリアム は、スマヌトコントラクト機胜を持぀分散型のオヌプン゜ヌスブロックチェヌンです。 Beacon chain ETH2は、むヌサリアムのアップグレヌド版で、むヌサリアムの゚コシステムにプルヌフ・オブ・ステヌクの抂念を導入したものです。ETH2でのステヌクは、Ethereumネットワヌクのセキュリティずスケヌラビリティを向䞊させるために、認蚌や新しいブロック䜜成の提案などのアクションを実行するバリデヌタヌによっお行われたす。バリデヌタヌは、ステヌキングを行うこずで報酬を埗るこずができたす。 AWSは珟圚、 Amazon Managed Blockchain AMBを提䟛しおいたす。これは、䞀般的なオヌプン゜ヌスフレヌムワヌクを䜿甚しお、スケヌラブルなブロックチェヌンネットワヌクを簡単に䜜成・管理できるフルマネヌゞドサヌビスです。珟圚、私たちは Hyperledger Fabric ずしおプラむベヌト蚱可型ネットワヌクを、たたパブリックのmainnetず2぀の人気テストネットであるRinkebyずRopsten(*)に接続する むヌサリアム フルノヌドをサポヌトしおいたす。Amazon Managed Blockchainは、珟時点ではEthereum Beaconチェヌンをサポヌトしおいたせん。 Rocket Pool は、Beaconチェヌンをサポヌトする分散型ステヌキングプヌルの1぀です。ステヌキングで報酬を埗たいバリデヌタヌは、Rocket Poolを䜿甚しお自分の怜蚌ノヌドを䜜成するこずができたす。これらの怜蚌ノヌドは、 Graviton2 プロセッサを搭茉した Amazon Elastic Compute Cloud (Amazon EC2) 䞊で実行するこずができたす。この蚘事では、 Amazon Elastic Compute Cloud 䞊での Rocket Pool のデプロむを簡玠化する AWS Cloud Development Kit (AWS CDK) アプリに぀いお玹介したす。 (*) 2022/11/1時点でGoerilのテストネットもサポヌトされおいたす。 ゜リュヌションの抂芁 CDKは、オヌプン゜ヌスの゜フトりェア開発フレヌムワヌクで、䜿い慣れたプログラミング蚀語を䜿っおクラりドアプリケヌションリ゜ヌスを定矩するこずができたす。 私たちのCDKアプリは、8぀のvCPUず16GBのメモリを含むc6g.2xlargeむンスタンスを䜿甚しお、Rocket Pool怜蚌ノヌドを䜜成したす。c6gむンスタンスはGraviton2プロセッサを搭茉しおおり、Ethereum怜蚌のようなブロックチェヌンワヌクロヌドに理想的です。たた、高性胜なブロックストレヌゞずしお2TBの Amazon Elastic Block Store EBSデバむスを、安党なアクセスずしお AWS Systems Manager Session Manager を構成しおいたす。 次の図は、AWS CDKを䜿甚しおアプリを初期化、合成、デプロむするプロセスを瀺しおいたす。 このデプロむメントでは、ETH1ずETH2の䞡方のブロックチェヌンネットワヌクの怜蚌を実行したす。デフォルトでは、このノヌドはETH1怜蚌甚にGethクラむアント、ETH2怜蚌甚にLighthouseクラむアントを䜿甚するように蚭定されおいたす。デプロむ埌にRocket Pool CLIを䜿甚しおこれらのクラむアント蚭定を倉曎するこずができたす。 ロヌカルのデスクトップでAWS CDKを䜿甚するこずができたす。 手順のドキュメント を参照しおAWS CDKを䜿い始めるこずができたす。 䟝存関係ずRocket Pool AWS CDKアプリケヌションをダりンロヌドしむンストヌル 以䞋のコヌドを䜿甚しお、AWS CDKず前提アプリをダりンロヌドおよびむンストヌルしたす。 # Install TypeScript globally for CDK npm i -g typescript # If you are running these commands in Cloud9 or already have CDK installed, then # skip this command npm i -g aws-cdk # Clone the demo CDK application code git clone https://github.com/aws-samples/cdk-rocketpool-validator-node # Change directory cd cdk-rocketpool-validator-node # Install the CDK application npm install Rocket Poolは16GBたたは32GBのメモリを搭茉したノヌドをデプロむするこずを掚奚しおいたす。この蚘事では、16GBのむンスタンスでデプロむしおいたす。ただし、メモリを増やしたい堎合は  lib/cdk-rocketpool-validator-stack.ts ファむルを修正したす。䟋えば、以䞋のデプロむコヌドで、ec2.InstanceSize.XLARGE2 を ec2.InstanceSize.XLARGE3 たたは XLARGE4 に倉曎したす。 // Create the instance const ec2Instance = new ec2.Instance(this, 'Instance', { vpc, instanceType: ec2.InstanceType.of(ec2.InstanceClass.C6G, ec2.InstanceSize.XLARGE2), machineImage: ami, securityGroup: securityGroup, role: role, blockDevices: [rootVolume] }); # Bootstrap the CDK application for first time cdk bootstrap # Deploy the CDK application cdk deploy ➜ rocketpool-blog git:(main) cdk deploy This deployment will make potentially sensitive changes according to your current security approval level (—require-approval broadening). Please confirm you intend to make the following modifications: IAM Statement Changes ┌───┬──────────────────────────────────┬────────┬──────────────────────────────────┬──────────────────────────────────┬───────────┐ │ │ Resource │ Effect │ Action │ Principal │ Condition │ ├───┌──────────────────────────────────┌────────┌──────────────────────────────────┌──────────────────────────────────┌──────────── │ + │ ${ec2Role.Arn} │ Allow │ sts:AssumeRole │ Service:ec2.${AWS::URLSuffix} │ │ ├───┌──────────────────────────────────┌────────┌──────────────────────────────────┌──────────────────────────────────┌──────────── │ + │ arn:${AWS::Partition}:s3:::{"Fn: │ Allow │ s3:GetBucket* │ AWS:${ec2Role} │ │ │ │ :Sub":"cdk-hnb659fds-assets-${AW │ │ s3:GetObject* │ │ │ │ │ S::AccountId}-${AWS::Region}"} │ │ s3:List* │ │ │ │ │ arn:${AWS::Partition}:s3:::{"Fn: │ │ │ │ │ │ │ :Sub":"cdk-hnb659fds-assets-${AW │ │ │ │ │ │ │ S::AccountId}-${AWS::Region}"}/* │ │ │ │ │ └───┮──────────────────────────────────┮────────┮──────────────────────────────────┮──────────────────────────────────┮───────────┘ IAM Policy Changes ┌───┬────────────┬────────────────────────────────────────────────────────────────────┐ │ │ Resource │ Managed Policy ARN │ ├───┌────────────┌───────────────────────────────────────────────────────────────────── │ + │ ${ec2Role} │ arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore │ └───┮────────────┮────────────────────────────────────────────────────────────────────┘ Security Group Changes ┌───┬──────────────────────────┬─────┬────────────┬─────────────────┐ │ │ Group │ Dir │ Protocol │ Peer │ ├───┌──────────────────────────┌─────┌────────────┌────────────────── │ + │ ${SecurityGroup.GroupId} │ In │ TCP 22 │ Everyone (IPv4) │ │ + │ ${SecurityGroup.GroupId} │ Out │ Everything │ Everyone (IPv4) │ └───┮──────────────────────────┮─────┮────────────┮─────────────────┘ (NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299) Do you wish to deploy these changes (y/n)? y CdkRocketpoolValidatorStack: deploying... [0%] start: Publishing 1e05055f04e0f731f0605c1138bcef8f9b37398dac16b3c617b743b9e9ff1b36:current_account-current_region [50%] success: Published 1e05055f04e0f731f0605c1138bcef8f9b37398dac16b3c617b743b9e9ff1b36:current_account-current_region [50%] start: Publishing 83d98b3d48439ff5155c3381d7bb65e8e94aff567b80132f374e41e033c588c9:current_account-current_region [100%] success: Published 83d98b3d48439ff5155c3381d7bb65e8e94aff567b80132f374e41e033c588c9:current_account-current_region CdkRocketpoolValidatorStack: creating CloudFormation changeset... [··························································] (0/18) 10:17:23 PM | CREATE_IN_PROGRESS | AWS::CloudFormation::Stack | CdkRocketpoolValidatorStack デプロむメントが完了するず、次のような出力が埗られたす。 ✅ CdkRocketpoolValidatorStack Outputs: CdkRocketpoolValidatorStack.IPAddress = 3.92.48.208 CdkRocketpoolValidatorStack.sshcommand = aws ssm start-session --target i-03deeff4f403fa189 —document-name SSM-RocketPoolConfiguration Stack ARN:arn:aws:cloudformation:us-east-1:1218594674:stack/CdkRocketpoolValidatorStack/4d31dd40-7979-11ec-a7cb-12 この時点で、AWS CDK Outputsからsshコマンドを実行し、むンスタンスにログむンしおください。 aws ssm start-session --target i-03deeff403fa189 —document-name SSM-RocketPoolConfiguration 以䞋は出力䟋です。 Starting session with SessionId: <> cd ~ && bash sh-4.2$ cd ~ && bash [ec2-user@ip-10-0-0-16 ~]$ むンストヌルの完了 接続が完了したら、以䞋のコマンドを実行しお残りのむンストヌルを完了させるこずができたす。 rocketpool service start (オプション) ETH1/ ETH2 のクラむアントを倉曎したい堎合は、以䞋のコマンドを実行したす。ETH1のデフォルトクラむアントはGeth、ETH2のデフォルトクラむアントはLighthouseです。 rocketpool service config 詳现に぀いおは、 Configuring the Smartnode Stack を参照しおください。前述のスタックはPraterテストネットワヌクで実装されおいたす。メむンネットに切り替えたい堎合は、 Pool Staking on Mainnet を参照しおください。 Rocket pool には Grafana のサポヌトが付属しおおり、ETH2 クラむアントごずにあらかじめダッシュボヌドが構築されおいたす。ブラりザで http://<your node IP>:<grafana port> に移動しお、 Grafana にログむンするこずができたす。Grafana ポヌトは、デフォルトで 3100 に蚭定されおいたす。デフォルトのログむン認蚌情報やダッシュボヌドのむンポヌト方法などの远加情報は、Rocket Pool のドキュメントの Setting up Grafana セクションに蚘茉されおいる堎合がありたす。以䞋は、Prysm ETH2 クラむアントのメトリクスを衚瀺するダッシュボヌドのサンプル画像です。 クリヌンアップ この蚘事で䜜成したリ゜ヌスを次のコヌドでクリヌンアップしたす。 cdk destroy CdkRocketpoolValidatorStack たずめ Rocket Poolは、Ethereumノヌドバリデヌタヌがプルヌフ・オブ・ステヌキングによっお報酬を埗るこずを可胜にしたす。この投皿では、AWS CDKを䜿甚しお最小限のセットアップ時間でAWSクラりドのRocket PoolにETH2バリデヌタヌをデプロむする方法を瀺したした。たた、Session Managerを䜿甚しおノヌドに安党にアクセスする方法も玹介したした。ETHバリデヌタをメむンネットにデプロむする前に、テストネットで詊しおみるこずをお勧めしたす。 フィヌドバックや远加の質問がある堎合は、コメントを残すこずをお勧めしたす。 本皿は゜リュヌションアヌキテクト畑が翻蚳を担圓したした。
この蚘事は、Origin瀟のColeman MaherずAWSのKevin Goodspeedによる投皿蚘事 How to Create and Sell Non-Fungible Tokens (NFTs) を翻蚳したものです。 Non-Fungible Token (NFTs)は、新しいタむプのデゞタル資産で、いろいろなずころで話題になっおいたす。NFTは、懐疑的な人からはナンセンスだず蚀われ、倚くの人からはデゞタルビヌニヌベむビヌや野球カヌドだず蚀われ、真の信者からはデゞタルコンテンツからアヌティストずファンの亀流方法たで党おを倉えおしたう革呜的な新しいアむデアだず蚀われおいたす。私はOrigin ProtocolでNFTを担圓し、すでに倚くの業界でNFTがいかにゲヌムチェンゞャヌであるかを目の圓たりにしおいたす。このブログでは、NFTの䞖界を簡単に玹介し、たた、自分でNFTを発行し、様々なプラットフォヌムやマヌケットプレむスで取匕する方法をお教えしたいず思いたす。 NFTの玹介 Non-Fungible TokenNFTは、ナニヌクたたはレアなデゞタル資産です。䞀般的に受け入れられおいる同等品ず簡単に亀換できるアむテムは、「代替可胜」ず蚀えたす。䟋えば、1ドル札は別の1ドル札、4セント硬貚、100セント硬貚ず亀換するこずができたす。NFTは、1぀しか存圚しないナニヌクなアむテムである堎合がありたす。たた、限られた数しか存圚しない、垌少なものである堎合もありたす。NFTが衚珟できるものに制限はありたせん。NBAはNBA Top Shotsでバスケットボヌルの詊合のハむラむトのビデオクリップを衚珟するためにNFTを䜿甚しおいたす。 NFTはたた、限定品のハンドバッグのような物理的な物の所有暩蚌明にも利甚できたす。たた、芞術の䞖界では「provenance」ずしお所有暩の蚌跡を提䟛するこずもできたす。NFTが物理的なモノず結び぀けられるなら、NFTは実䜓隓ずも結び぀けられ、䟋えばコンサヌトやプラむベヌトな公挔ぞのアクセスチケットずしお機胜するこずも可胜です。NFTの非垞に匷力な偎面の1぀は、二次販売取匕による将来の収益を、NFTのオリゞナル䜜成者たたは「発行者」にプログラム的に流甚できるこずです。぀たり、最初の販売埌にNFTが䜕床も買い替えられたずしおも、元の䜜成者は収益やロむダリティを埗るこずができたす。 NFTを発行する方法 独立系クリ゚むタヌによるNFTの掻動の倧郚分は、むヌサリアムのブロックチェヌン䞊で行われおいたす。むヌサリアムずやり取りするには、モバむルアプリケヌションずブラりザ拡匵機胜を持぀MetaMaskのようなWeb3察応のりォレットが必芁です。むヌサリアムで取匕を行うには、ブロックチェヌンネットワヌクや「ガス」の手数料を支払うためのむヌサリアムのネむティブ暗号通貚であるETHがりォレットに必芁です。ETHはCoinbaseのような取匕所で取埗するこずができたす。 むヌサリアムのNFTはオヌプン゜ヌスの暙準に基づいおおり、自分のりォレットに保有、぀たり「保管」するこずになりたす。぀たり、NFTを発行する際、特定のプラットフォヌムに瞛られるこずなく、自分の奜きなツヌルやプラットフォヌムを䜿っおNFTを䜜成するこずができたす。䟋えば、MintbaseでNFTを発行し、OpenSeaでそれを公開・販売しおも、NFTは自分のりォレットから出るこずはありたせん。 OpenSeaは最近、クリ゚むタヌがガス代手数料を支払うこずなくNFTを発行できる機胜を発衚したした。その方法に぀いお、 ステップバむステップのガむド が公開されおいたす。たず、NFTを远加するコレクションを䜜成する必芁がありたす。コレクションを䜜成し、名前を付けたら、画像ファむル、ビデオファむル、3Dモデル、音楜ファむルなど、基本的にあらゆる皮類のデゞタルコンテンツ・ファむルを䜿っおNFTを䜜成し、远加するこずができたす。NFTの名前、説明、レア床も蚭定するこずができたす。 Mintbaseは、クリ゚むタヌがNFTを簡単に発行できるもう䞀぀のプラットフォヌムです。MintbaseはOpenSeaず同様、NFTを発行するためにたずストアを䜜成する必芁がありたす。必芁な手順に぀いおは、 非暗号化ナヌザヌ向けのガむド を参照しおください。Mintbaseは珟時点では画像のみをサポヌトしおいるため、ビゞュアルアヌティストに最適です。ストアを䜜成したら、名前、説明、数量を指定しお NFT を発行し、ストアに远加したす。すべおのNFTはデフォルトで販売甚になっおいたすが、ボックスをチェックしお販売甚に衚瀺されないようにするこずができたす。 Foundationは、NFTクリ゚むタヌのための招埅制を採甚しおいるプラットフォヌムです。Foundationは、誰でもプロフィヌルを䜜成できたすが、遞ばれたクリ゚むタヌだけがNFTを発行するこずができたす。Foundationは、プラットフォヌム䞊で NFTを発行する方法に関する完党なガむド を公開しおいたす。Foundationは、画像、ビデオファむル、オヌディオファむル、3DモデルによるNFTの発行をサポヌトしおいたす。NFTの名前、説明、数量を遞択するこずができたす。 NFTSを売华する方法 ほずんどのNFTプラットフォヌムでは、NFTをリストしお販売するこずもできたす。OpenSeaでNFTを売华するには、そのNFTのアセットペヌゞに移動し、「売华」をクリックしたす。蚭定䟡栌、オヌクション、バンドル販売から販売の皮類を遞択し、その他の条件を蚭定するこずができるようになりたす。 OpenSea のガむド では、すべおの手順を説明しおいたす。Mintbaseでは、デフォルトですべおのNFTが販売甚にリストされおいたす。NFTを販売甚にリストしないこずを遞択した堎合は、そのNFTに移動しお「販売䞭」をチェックし、䟡栌を蚭定するこずができたす。Foundationは、NFTオヌクションに重点を眮いおいたす。NFTをオヌクションに出品するには、オヌクションに移動しおリザヌブプラむスを蚭定し、「List Your NFT」をクリックしおオヌクションを開始したす。オヌクションは24時間行われ、最埌の15分間で入札があるず、オヌクションはさらに15分間延長されたす。 Foundationのガむド に詳现が蚘茉されおいたす。 もし、NFTのために自分だけにキュレヌションされたストアを立ち䞊げたいず考えおいるなら、Originの共同蚭立者でAmazonブロックチェヌンリヌドのKevin Goodspeedが曞いた AWS䞊で自分だけのDshopを立ち䞊げる方法に぀いおのガむド で確認するこずができたす。倚くのクリ゚むタヌは、自分のNFTが他のアヌティストによる無関係なNFTず同じマヌケットプレむスや仮想ギャラリヌに衚瀺されるこずを望たないため、キュレヌションを非垞に重芁芖しおいたす。たた、無関係なNFTを䞀緒に衚瀺するこずは、NFTの䟡栌に悪圱響を及がす可胜性がありたす。DshopはすでにNFTの出品に察応しおいるので、Dshopを立ち䞊げ、自分のプラむベヌトストアずドメむンでNFTを出品するだけでよいのです。 たずめ NFTずは䜕か、そしおこの゚キサむティングな新䞖界に足を螏み入れるための知識に぀いお、ご理解いただけたず思いたす。分散型技術には確かに孊習曲線がありたす。ですから、萜胆するこずなく、非垞に新しく実隓的な技術を扱っおいるこずを認識しおください。皆さんがどのようなNFTを䜜り䞊げ、䞖界ず共有するのか、楜しみでなりたせん。 本皿は゜リュヌションアヌキテクト畑が翻蚳を担圓したした。
Amazon Redshift は、クラりドにおけるフルマネヌゞドでペタバむト芏暡のデヌタりェアハりスサヌビスです。Amazon Redshift を䜿えば、すべおのデヌタを分析しお、ビゞネスず顧客に関する総合的な掞察を導き出すこずができたす。ストアドプロシヌゞャをサポヌトしおおり、準備された SQL コヌドが保存され、コヌドを䜕床も再利甚するこずができたす。 ストアドプロシヌゞャは、デヌタ倉換、デヌタ怜蚌、ビゞネス固有のロゞックをカプセル化するために䞀般的に䜿甚されたす。耇数の SQL ステップをストアドプロシヌゞャにたずめるこずで、再利甚可胜なコヌドブロックを䜜成し、単䞀のトランザクションたたは耇数の個別のトランザクションずしおたずめお実行するこずができたす。Amazon Redshift 䞊のデヌタ凊理を自動化するために、ストアドプロシヌゞャをスケゞュヌルするこずもできたす。詳现に぀いおは、 Amazon Redshift にストアドプロシヌゞャを導入する を参照しおください。 Redshift ストアドプロシヌゞャのデフォルトのアトミックトランザクションモヌドでは、Redshift ストアドプロシヌゞャの呌び出しは、呌び出されたずきに独自のトランザクションを䜜成するか、ストアドプロシヌゞャが呌び出される前に明瀺的なトランザクションが開始されおいる堎合は、既存のトランザクションの䞀郚ずなりたす。プロシヌゞャ内のすべおのステヌトメントは、ストアドプロシヌゞャの呌び出しが終了したずきに終了する単䞀のトランザクションブロック内にあるかのように動䜜したす。他のプロシヌゞャぞの入れ子になった呌び出しは、他の SQL 文ず同様に扱われ、呌び出し元ず同じトランザクションのコンテキスト内で動䜜したす。TRUNCATE、COMMIT、ROLLBACK ステヌトメントず、任意の SQL 文による䟋倖凊理ブロックは、珟圚のトランザクションを終了し、暗黙的に新しいトランザクションを開始したす。この動䜜は、Teradata のような他のシステムから Amazon Redshift ぞの移行においお問題を匕き起こす可胜性がありたす。 この投皿では、非アトミックトランザクションモヌドのための Amazon Redshift ストアドプロシヌゞャの拡匵に぀いお説明したす。このモヌドは、ストアドプロシヌゞャ内のステヌトメントを自動的にコミットするこずを可胜にする、匷化されたトランザクション制埡を提䟛したす。 非アトミックトランザクションモヌド 新しい非アトミックトランザクションモヌド機胜は、Amazon Redshift のストアドプロシヌゞャに 3 ぀の匷化された機胜を提䟛したす。 DML たたは DDL ステヌトメントが明瀺的にオヌプンされたトランザクションの䞀郚でない限り、ストアドプロシヌゞャ内の各ステヌトメントは、それらステヌトメント自身が暗黙的に開始するトランザクションで実行され、次のステヌトメントではたた新しいトランザクションが開始されたす。明瀺的にトランザクションが開始された堎合、埌続のステヌトメントはすべお実行され、明瀺的なトランザクション制埡コマンド COMMIT たたは ROLLBACK がトランザクションを終了するために実行されるたで、コミットされないたたになりたす。 Amazon Redshift は䟋倖凊理ステヌトメントが完了した埌、䟋倖を再送出したせん。そのため、䟋倖凊理ブロックによっおキャッチされた䟋倖を再送出するために、INFO や EXCEPTION を持たない新しい RAISE ステヌトメントが提䟛されおいたす。INFO や EXCEPTION を持たない、この RAISE ステヌトメントは、䟋倖凊理ブロックでのみ蚱可されおいたす。 たた、新しい START TRANSACTION ステヌトメントは、非アトミックトランザクションモヌドのストアドプロシヌゞャ内で明瀺的なトランザクションを開始したす。明瀺的に開始されたトランザクションを終了するには、既存のトランザクション制埡コマンド ( COMMIT たたは ROLLBACK ) を䜿甚したす。 Amazon Redshift はサブトランザクションをサポヌトしないため、既に開始されたトランザクションが存圚する堎合、このステヌトメントを再床呌び出しおも䜕も行われず、゚ラヌは発生したせん。 非アトミックトランザクションモヌドのストアドプロシヌゞャ呌び出しが終了したずきに、明瀺的トランザクションがただ実行䞭の堎合、セッション内でトランザクション制埡コマンドが実行されるたで、明瀺的トランザクションは実行䞭のたたになりたす。 トランザクション制埡コマンドを実行する前にセッションが切断されるず、トランザクション党䜓が自動的にロヌルバックされたす。 その他の制限 Redshift ストアドプロシヌゞャにはいく぀かの制限がありたす。 ストアドプロシヌゞャの入れ子呌び出しに぀いおは、アトミックトランザクションモヌドデフォルトのモヌドであろうず、新しい非アトミックトランザクションモヌドであろうず、すべおのプロシヌゞャは同じトランザクションモヌドで䜜成されなければなりたせん。 2 ぀のトランザクションモヌドアトミックず非アトミックにたたがっおストアドプロシヌゞャを入れ子にするこずはできたせん。 非アトミックトランザクションモヌドのストアドプロシヌゞャに SECURITY DEFINER オプションや SET configuration_parameter オプションを蚭定するこずはできたせん。 カヌ゜ルぞの圱響 非アトミックトランザクションモヌドのストアドプロシヌゞャのカヌ゜ルは、デフォルトのアトミックトランザクションモヌドず比范しお異なる動䜜をしたす。 カヌ゜ルステヌトメントは、カヌ゜ルルヌプの各むテレヌションが自動コミットされないように、カヌ゜ルを開始する前に明瀺的なトランザクションブロックが必芁になりたす。 非アトミックトランザクションモヌドのストアドプロシヌゞャからカヌ゜ルを返すには、カヌ゜ルを開始する前に明瀺的なトランザクションブロックが必芁です。そうでなければ、ルヌプ内の SQL ステヌトメントが自動的にコミットされる時に、カヌ゜ルはクロヌズされたす。 利点 ナヌザヌの芖点から芋たこの機胜の䞻な利点は、以䞋の通りです。 Teradata のセッションモヌドで実行できる Teradata のストアドプロシヌゞャをリフトシフトする機胜を提䟛したす。これは、Teradata や SQL Server のようなデヌタりェアハりスからのシヌムレスな移行に圹立ちたす。 Amazon Redshift が゚ラヌや䟋倖に遭遇した際に、ストアドプロシヌゞャ内郚でより柔軟な操䜜を提䟛できるようになりたす。Amazon Redshift は、䟋倖に到達する前に以前のアクションの状態を保持できるようになりたした。 構文 次のコヌドに瀺すように、新しいオプションのキヌワヌド NONATOMIC がストアド プロシヌゞャ定矩の構文に远加されたした。 <code class="lang-sql">CREATE [ OR REPLACE ] PROCEDURE sp_procedure_name ( [ [ argname ] [ argmode ] argtype [, ...] ] ) [ NONATOMIC ] AS $$ procedure_body $$ LANGUAGE plpgsql</code> このオプションのキヌワヌドは、ストアドプロシヌゞャを非アトミックトランザクションモヌ ドで䜜成したす。このキヌワヌドを指定しない堎合は、ストアドプロシヌゞャの䜜成時にデフォルトのアトミックモヌドがトランザクションモヌドずなりたす。 NONATOMIC は、プロシヌゞャ内の各 DML ず DDL ステヌトメントが暗黙的にコミットされるこずを意味したす。 非アトミックモヌドでない堎合、プロシヌゞャは呌び出し開始時に独自のトランザクションを䜜成するか、呌び出し前に明瀺的なトランザクションが開始されおいれば既存のトランザクションの䞀郚ずなりたす。ストアドプロシヌゞャ内の党おのステヌトメントは、この 1 ぀のトランザクションに属するこずになりたす。 NONATOMIC モヌドの䟋 顧客の䞻連絡先ず副連絡先の電話番号を栌玍する顧客連絡先テヌブル custcontacts を考えおみたしょう。 CREATE table custcontacts( custid int4 not null, primaryphone char(10), secondaryphone char(10)); 連絡先番号のない 3 ぀のサンプル顧客レコヌドを挿入したす。 INSERT INTO custcontacts VALUES (101, 'xxxxxxxxxx', 'xxxxxxxxxx'); INSERT INTO custcontacts VALUES (102, 'xxxxxxxxxx', 'xxxxxxxxxx'); INSERT INTO custcontacts VALUES (103, 'xxxxxxxxxx', 'xxxxxxxxxx'); 䞻ず副の電話番号を曎新するストアドプロシヌゞャを䜜成する必芁がありたす。芁件は、副連絡先番号ぞの曎新が䜕らかの理由で倱敗した堎合に、䞻連絡先番号ぞの曎新をロヌルバックしないこずです。 これは、NONATOMIC キヌワヌドを䜿甚しおストアドプロシヌゞャを䜜成するこずで実珟できたす。NONATOMIC キヌワヌドは、ストアドプロシヌゞャ内の各ステヌトメントが独自の暗黙的なトランザクションブロックで実行されるようにしたす。したがっお、副電話番号に察する UPDATE ステヌトメントが倱敗しおも、䞻電話番号に察するデヌタ曎新がロヌルバックされるこずはありたせん。以䞋のコヌドを参照しおください。 CREATE PROCEDURE sp_update_custcontacts(cid int4,pphone char(15),sphone char(15)) NONATOMIC AS $$ BEGIN UPDATE custcontacts SET primaryphone=pphone WHERE custid=cid; UPDATE custcontacts SET secondaryphone=sphone WHERE custid=cid; END; $$ LANGUAGE plpgsql; それでは、10 桁以䞊の secondaryphone を枡すストアドプロシヌゞャを呌び出しおみたしょう。副電話番号の長さが正しくないため UPDATE ステヌトメントは倱敗したす。 call sp_update_custcontacts(101,'1234567890','345443345324'); 前述のプロシヌゞャ呌び出しは、䞻電話番号の曎新には成功したすが、副電話番号の曎新には倱敗したす。ただし、 primaryphone の曎新は、ストアドプロシヌゞャ定矩の NONATOMIC 節により、独自の暗黙のトランザクション ブロックで実行されたため、ロヌルバックされたせん。 select * from custcontacts; custcontacts | primaryphone | secondaryphone -------------+---------------+--------------- 101 | 1234567890 | XXXXXXXXXX 102 | XXXXXXXXXX | XXXXXXXXXX 103 | XXXXXXXXXX | XXXXXXXXXX NONATOMICモヌドでの䟋倖凊理 ストアドプロシヌゞャにおける䟋倖の取り扱いは、アトミックモヌドか非アトミックモヌドかで異なりたす。 アトミック (デフォルト) – 䟋倖は垞に再送出されたす。 非アトミック – 䟋倖は凊理され、再送出するかどうかを遞択できたす。 先ほどの䟋に続き、非アトミックモヌドでの䟋倖凊理を確認しおいきたしょう。 ストアドプロシヌゞャによっお発生した䟋倖を蚘録するために、以䞋のテヌブルを䜜成したす。 CREATE TABLE procedure_log (log_timestamp timestamp, procedure_name varchar(100), error_message varchar(255)); 次に、䟋倖を凊理するために sp_update_custcontacts() プロシヌゞャを曎新したす。プロシヌゞャ定矩に EXCEPTION ブロックを远加しおいるこずに泚意しおください。これは、䟋倖が発生した堎合に procedure_log テヌブルにレコヌドを挿入したす。 CREATE OR REPLACE PROCEDURE sp_update_custcontacts(cid int4,pphone char(15),sphone char(15)) NONATOMIC AS $$ BEGIN UPDATE custcontacts SET primaryphone=pphone WHERE custid=cid; UPDATE custcontacts SET secondaryphone=sphone WHERE custid=cid; EXCEPTION WHEN OTHERS THEN INSERT INTO procedure_log VALUES (getdate(), 'sp_update_custcontacts', sqlerrm); END; $$ LANGUAGE plpgsql; もう 1 ぀ストアドプロシヌゞャを䜜成したす。このプロシヌゞャは前述のプロシヌゞャを呌び出したす。このプロシヌゞャも EXCEPTION ブロックを持ち、䟋倖が発生した堎合に procedure_log テヌブルにレコヌドを挿入したす。 CREATE PROCEDURE sp_update_customer() NONATOMIC AS $$ BEGIN -- Let us assume you have additional staments here to update other fields. For this example, ommitted them for simplifiction. -- Nested call to update contacts call sp_update_custcontacts(101,'1234567890','345443345324'); EXCEPTION WHEN OTHERS THEN INSERT INTO procedure_log VALUES (getdate(), 'sp_update_customer', sqlerrm); END; $$ LANGUAGE plpgsql; 䜜成した芪プロシヌゞャを呌び出しおみたしょう。 call sp_update_customer(); これにより、 sp_update_custcontacts() プロシヌゞャが呌び出されたす。副電話番号を無効な倀で曎新しおいるため、内郚で呌び出されおいるプロシヌゞャ sp_update_custcontacts() は倱敗したす。コントロヌルは sp_update_custcontacts() プロシヌゞャの EXCEPTION ブロックに入り、 procedure_log テヌブルに挿入したす。 しかし、非アトミックモヌドでは䟋倖を再送出したせん。したがっお、芪プロシヌゞャ sp_update_customer() は、 sp_update_custcontacts() プロシヌゞャから枡された䟋倖を取埗したせん。コントロヌルは sp_update_customer() プロシヌゞャの EXCEPTION ブロックに入りたせん。 procedure_log テヌブルをク゚リするず、 sp_update_custcontacts() プロシヌゞャで凊理された゚ラヌの゚ントリのみが衚瀺されたす。 select * from procedure_log; 次に、RAISE ステヌトメントを䜿甚しお sp_update_custcontacts() プロシヌゞャを再定矩したす。 CREATE PROCEDURE sp_update_custcontacts(cid int4,pphone char(15),sphone char(15)) NONATOMIC AS $$ BEGIN UPDATE custcontacts SET primaryphone=pphone WHERE custid=cid; UPDATE custcontacts SET secondaryphone=sphone WHERE custid=cid; EXCEPTION WHEN OTHERS THEN INSERT INTO procedure_log VALUES (getdate(), 'sp_update_custcontacts', sqlerrm); RAISE; END; $$ LANGUAGE plpgsql; 芪ストアドプロシヌゞャ sp_update_customer() をもう䞀床呌び出しおみたしょう。 call sp_update_customer(); ここで、内郚で呌び出されおいるプロシヌゞャ sp_update_custcontacts() は、自身の EXCEPTION ブロックで䟋倖を凊理した埌、芪プロシヌゞャ sp_update_customer() に䟋倖を再送出したす。その埌、コントロヌルは芪プロシヌゞャの EXCEPTION ブロックに到達し、 procedure_log テヌブルに別のレコヌドを挿入したす。 procedre_log テヌブルにク゚リを実行するず、2 ぀の゚ントリヌが衚瀺されたす。1 ぀は内郚で呌び出されおいるプロシヌゞャ sp_update_custcontacts() によるもので、もう 1 ぀は芪プロシヌゞャ sp_update_customer() によるものです。これは、内郚で呌び出されおいるプロシヌゞャの RAISE ステヌトメントが䟋倖を再送出したこずを瀺しおいたす。 select * from procedure_log; 非アトミック・モヌドでの明瀺的なSTART TRANSACTION文 START TRANSACTION ステヌトメントを発行しお、ストアドプロシヌゞャ内でトランザクションブロックを開始するこずができたす。これは、ストアドプロシヌゞャ内で新しいトランザクションを開始したす。参考䟋に぀いおは、 非アトミックモヌドのストアドプロシヌゞャのトランザクション管理 を参照しおください。 たずめ この投皿では、Redshift ストアドプロシヌゞャの非アトミックトランザクションモヌドの機胜匷化に぀いお説明したした。これは、ストアドプロシヌゞャ内のステヌトメントを自動的にコミットできるようにトランザクション制埡を拡匵したものです。このモヌドは、Teradata のような他のシステムから Amazon Redshift ぞの移行も容易にしたす。 原文は こちら です。
オブザヌバビリティ可芳枬性ずは、システムで䜕が起こっおいるかをどれだけ把握できるかを衚したす。倚くの堎合、メトリクス、ログ、トレヌスを収集するために蚈装するこずで実珟したす。運甚䜓隓の向䞊や、業務目暙の達成を実珟するには、システムがどのように動䜜しおいるかを理解する必芁がありたす。これを実珟するために、倚くのお客様がリアルタむムのモニタリング、アラヌトずアラヌム、カスタマむズ可胜なダッシュボヌドの利甚や、ビゞネスの意思決定を支揎を目的ずしたメトリクスの可芖化を行うために、 Amazon CloudWatch を利甚しおいたす。組織では、カスタムパラメヌタを䜿甚しお任意の AWS Lambda 関数を呌び出すこずができる CloudWatch ダッシュボヌドりィゞェットを利甚するこずが可胜です。これにより、ダッシュボヌド䞊でデヌタを分析、および衚瀺できる可胜性が倧きく広がりたす。しかし、組織内にこれらの関数を䜜成する専門知識がない堎合はどうすれば良いでしょうか。ここで、 Amazon CodeWhisperer がこれらの関数の䜜成を支揎するコヌド提案を行うこずで、オブザヌバビリティの向䞊に圹立ちたす。 Amazon CloudWatch ダッシュボヌド を䜿甚するず、 AWS 環境党䜓のさたざたなメトリクスずリ゜ヌスを䞀元的にモニタリングするこずができるようになりたす。これにより、システムや組織党䜓でのアプリケヌションの健党性ずパフォヌマンスを把握するこずができたす。カスタムりィゞェットにより、これらのダッシュボヌドの柔軟性が倧幅に向䞊し、高床なレベルの監芖ず可芖化が可胜になりたす。 Amazon CodeWhisperer は、統合開発環境 (IDE) でリアルタむムに 1 行たたは関数コヌド党䜓の提案を生成するこずができる AI サヌビスです。これにより、゜フトりェアの構築を迅速に行うこずができたす。 この投皿では、 CodeWhisperer を利甚しお、 カスタムりィゞェット 、 CloudWatch ダッシュボヌドの開発およびデプロむに䜿甚されるコヌドの䜜成を支揎する方法を瀺したす。 たたこの投皿では AWS Cloud Development Kit (CDK) を䜿甚したす。CDK は、近代的なプログラミング蚀語を䜿甚しおむンフラストラクチャをコヌドずしお定矩し、 AWS CloudFormation を通じおデプロむするためのオヌプン゜ヌスの゜フトりェア開発フレヌムワヌクです。 ゜リュヌション党䜓像 この゜リュヌションでは、 Amazon CodeWhisperer を䜿甚しお、 CDK コヌドの蚘述に関するコヌド提案を行いたす。 AWS CDK を䜿甚しお、さたざたなタむプの 3 ぀のりィゞェットを持぀ダッシュボヌドをコヌディングおよびデプロむしたす。 䟋では、テキストりィゞェットず 2 ぀のカスタムりィゞェットの䜜成方法を瀺したす。 以䞋の図は、 CDK を介しお䜜成されるリ゜ヌスの抂芁を瀺しおいたす。 図1. CDK によっお䜜成される Amazon CloudWatch ダッシュボヌドアヌキテクチャ この投皿のすべおの手順に沿っお操䜜を行うず、CloudWatch ダッシュボヌドは次のようになりたす。2 ぀のカスタムりィゞェットず 1 ぀のテキストりィゞェットが含たれたす。 図2. CloudWatch テキストりィゞェット この投皿党䜓を通しお行うこずは以䞋のずおりです。 Amazon CodeWhisperer の蚭定 ビルダヌ ID を䜿甚するように IDE を蚭定 AWS CLI 、 AWS CDK 、 AWS IAM の蚭定 Amazon CodeWhisperer を䜿甚しお CDK コヌドず Lambda 関数の䜜成 デプロむのためのアセットを保持する Amazon Simple Storage Service(S3) バケットの䜜成 ダッシュボヌドずカスタムりィゞェットのデプロむ 前提条件 この投皿に沿っお䜜業を進める堎合、ロヌカルマシン䞊の統合開発環境 (IDE) で䜜業を行なっおいきたす。 CodeWhisperer は、 Visual Studio Code (VS Code) 、 PyCharm などの JetBrains 補品など、耇数の IDE で動䜜したす。この蚘事では VS Code を䜿甚したす。他の IDE の䜿甚手順は、 Amazon CodeWhisperer のドキュメント で確認できたす。 たた、以䞋に぀いおも必芁になりたす。 AWS アカりント Visual Studio Code Python ず pip AWS CLI AWS CDK ビルダヌ ID を䜿甚するように IDE を蚭定 AWS Builder ID を䜿甚しお、 VS Code で CodeWhisperer を蚭定したしょう。AWS Builder ID は、 AWS 䞊で開発するすべおのナヌザヌのための新しい個人プロファむルです。 たず最初に、AWS Toolkit がむンストヌルされおいるこずを確認する必芁がありたす。 VS Code IDE の巊偎のパネルで [Extensions] に移動したす。怜玢バヌに「AWS Toolkit」ず入力し、以䞋のように拡匵機胜をむンストヌルしおください。 図3. VS CodeでのAWS拡匵機胜の蚭定 これで、巊偎のパネルに AWS Toolkit アむコンが衚瀺されるはずです。 Visual Studio Code の AWS Toolkit で、[Developer tools] の [CodeWhisperer] を遞択し、 [Start] をクリックしたす。するず、 VS Code の䞊郚にドロップダりンメニュヌが衚瀺されたす。 図4. CodeWhispererの開始 ドロップダりンメニュヌから、 [Use a personal email to sign up and sign in with AWS Builder ID] を遞択したす。 図5. 個人メヌルアドレスの蚭定 [Copy Code for AWS Builder ID] のプロンプトが衚瀺されたら、 [Copy Code] ず [Proceed] を遞択したす。 [Do you want Code to open the external website?] のプロンプトが衚瀺されたら、 [Open] を遞択したす。 ブラりザタブが開き、 [Authorize request] りィンドりが衚瀺されたす。コヌドはすでにクリップボヌドにコピヌされおいるはずです。それを貌り付けお、 [Next] を遞択したす。 [Create AWS Builder ID] ペヌゞがブラりザタブで開きたす。メヌルアドレスを入力し、 [Next] を遞択したす。 [Your name] のフィヌルドが衚瀺されるので、名前を入力し、 [Next] を遞択したす。 入力したメヌルアドレスに確認コヌドが届きたす。確認画面で届いたコヌドを入力し、 [Verify] を遞択したす。 [Choose your password] 画面で、パスワヌドを入力し、確認入力しおから、 [Create AWS Builder ID] を遞択したす。 ブラりザタブが開き、 Visual Studio Code の AWS Toolkit にデヌタにアクセスするこずを蚱可するよう求めるメッセヌゞが衚瀺されたす。 [Allow] を遞択したす。 VS Code に戻りたす。すでに IAM を䜿甚しお他の AWS ツヌルに認蚌しおいる堎合は、すべおの AWS サヌビスで Builder ID を䜿甚するかどうかを尋ねられたす。状況に適したオプションを遞択したす。 AWS CLI 、 AWS CDK 、 AWS IAM の蚭定 このセクションでは、AWS CLI、CDK、CDKのフォルダ構造を蚭定したす。 AWS CLIを蚭定するには、「 AWS CLI を蚭定する 」の手順に埓っおください。 新しいフォルダを䜜成し、 sample1 ず名前を付けたす。このフォルダで CDK プロゞェクトを䜜成したす。 sample1 フォルダにディレクトリを倉曎したす。 cd sample1 cdk をブヌトストラップしたす。 cdk bootstrap aws://< アカりント番号 >/< リヌゞョン名 > cdk python 環境を䜜成したす。 cdk init --language python これにより、sample1 フォルダに必芁な python cdk ファむルが䜜成されたす。 venv をアクティベヌトしたす。 source .venv/bin/activate 必芁なパッケヌゞをむンストヌルしたす。 pip install -r requirements.txt Amazon CodeWhisperer を䜿甚したコヌドの䜜成 このセクションでは、 CodeWhisperer を䜿甚しお CDK コヌドを蚘述する方法を説明したす。 CDK を䜿甚しお、次の 6 ぀のリ゜ヌスを䜜成する方法を説明しおいきたす。 2 ぀の Lambda 関数 1 ぀の Lambda 関数は、ナヌザヌ入力を受け取り、察応する出力を生成したす。 もう 1 ぀のLambda関数は、 S3 バケットから HTML を取埗したす。 3 ぀の CloudWatch りィゞェット 1 ぀目の Lambda 関数ず統合するカスタムりィゞェット。ナヌザヌ入力を受け付け、 Lambda 関数からデヌタを読み取っお出力を提䟛したす。 2 ぀目の Lambda 関数ず統合するカスタムりィゞェット。 S3 バケットから HTML ファむルを読み取りたす。 「Hello World」ず衚瀺するテキストりィゞェット 1 ぀の CloudWatch ダッシュボヌド Visual Studio Codeの利甚 巊䞊の [File] メニュヌから、 [Open Folder] を遞択したす。ステップ 2 で䜜成した sample1 フォルダを遞択したす。 assets ずいう名前の新しいフォルダを䜜成し、 HelloWorld.html ずいう名前の html ファむルを䜜成したす。 <!DOCTYPE html> <html> <body> <h1>Hello!! This is an HTML file from S3 bucket</h1> </body> </html> このファむルは S3 バケットにアップロヌドされ、 Lambda 関数によっお読み蟌たれたす。 再び sample1 フォルダに移動し、 sample1 ずいう名前のサブフォルダを探したす。 そのサブフォルダにあるスタックファむルを線集したす。 ・import 文を远加したす入力時に CodeWhisperer が自動補完を支揎したす from aws_cdk import ( aws_lambda, Stack, App, Duration, aws_iam, aws_cloudwatch, aws_s3, RemovalPolicy, aws_s3_deployment ) 必芁なモゞュヌルをむンポヌトしたら、次の行を探したす。 # The code that defines your stack goes here この行を削陀し、スタックコヌドを蚘述したす。 CodeWhisperer にコメントを入力しお、 AWS CDK を䜿甚した最初の Lambda 関数の䜜成を提案させたす。 # define lambda function that has inline code 入力を開始するず、 CodeWhisperer が提案を開始したす。 Lambda 関数の䜜成に関するヘルプが衚瀺されたら、 Lambda 関数の CDK コヌドを次のように蚘述したす。 # define lambda function that has inline code lambda_function = aws_lambda.Function(self, 'HelloWorldFunction', code=aws_lambda.Code.from_inline(""" def lambda_handler(event, context): showme = event['widgetContext']['forms']['all'].get('petType') # create a 2D array for pets and count data = [['puppy','10'],['bunny','5'],['kitten','6']] rowdata = "" for row in data: if (showme and showme==row[0]): # assume only 2 elements in the data rowdata += f''' <tr> <td>{row[0]}</td> <td>{row[1]}</td> </tr>''' response = f''' <p>Which pet do you want to see? valid inputs: puppy/bunny/kitten <form><input name="petType" value="{showme}" size="10"></form> </p> <table> <tr> <th>Pets</th> <th>Count</th> </tr> {rowdata} </table> <a class="btn btn-primary">Run query</a> <cwdb-action action="call" endpoint="{context.invoked_function_arn}"></cwdb-action> ''' return response """ ), description="CloudWatch Custom Widget sample: simple hello world", function_name=self.stack_name, handler='index.lambda_handler', memory_size=128, runtime=aws_lambda.Runtime.PYTHON_3_9, timeout=Duration.seconds(60)' ) コヌドをカスタマむズするために入力を远加するず、 CodeWhisperer が提案を行うこずに気づくでしょう。この䟋では、ペットの数の 2 次元配列を䜜成し、ナヌザヌに取埗するデヌタを入力するよう求めおいたす。ナヌスケヌスに基づいおデヌタを倉曎できたす。 最初の CloudWatch カスタムりィゞェットを䜜成するためのコメントの入力を開始したす。このりィゞェットでは、入力を芁求し、出力ずしお子犬の数を提䟛するコヌドを䜿甚したす。 # define custom widget to display lambda function CodeWhisperer の提案を䜿甚しお、カスタムりィゞェットを䜜成する CDK コヌドを蚘述したす。 # define custom widget to display lambda function my_custom_widget = aws_cloudwatch.CustomWidget( function_arn=lambda_function.function_arn, title="Hello, World!") CloudWatch のテキストりィゞェットを䜜成するためのコメントの入力を開始したす。 # define a text widget that displays "Hello World" CodeWhisperer の提案を利甚しながら、テキストりィゞェットのコヌドを完成させたす。 # define a text widget that displays "Hello World" my_text_widget = aws_cloudwatch.TextWidget(markdown='# Hello World', width=6, height=2 ) assets フォルダのファむルをロヌドする S3 バケットを䜜成したしょう。 # define parameter for s3 bucket name s3_bucket_name = f'helloworld-{self.account}' s3_file_name = 'HelloWorld.html' # define s3 bucket with account id as suffix for hello world with no public access s3_bucket = aws_s3.Bucket(self, "S3Bucket", versioned=False, block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL, encryption=aws_s3.BucketEncryption.KMS_MANAGED, auto_delete_objects=True, removal_policy=RemovalPolicy.DESTROY, bucket_name=s3_bucket_name ) # define s3 bucket deployment to deploy files under assets folder aws_s3_deployment.BucketDeployment(self, "S3BucketDeployment", sources=[aws_s3_deployment.Source.asset("assets")], destination_bucket=s3_bucket ) S3 バケットからファむルを読み取る第 2 の Lambda 関数を䜜成したしょう。関連する IAM ロヌルも䜜成したす。 # define IAM role for lambda that allows to read s3_file_name from s3 bucket with name s3_bucket_name s3GetObjectLambda_IAM_role = aws_iam.Role(self, "S3GetObjectLambda_IAM_role", assumed_by=aws_iam.ServicePrincipal("lambda.amazonaws.com"), inline_policies={ "S3GetObjectLambda_IAM_role_policy": aws_iam.PolicyDocument( statements=[ aws_iam.PolicyStatement( actions=["s3:GetObject"], effect=aws_iam.Effect.ALLOW, resources=[ f'arn:aws:s3:::{s3_bucket_name}/{s3_file_name}' ] ) ] ) } ) 2 ぀目のカスタムりィゞェットを䜜成したしょう。 # define s3GetObject custom widget to display s3GetObjectlambda_function s3GetObject_custom_widget = aws_cloudwatch.CustomWidget( function_arn=s3GetObjectlambda_function.function_arn, width=6, height=4) 次に、䜜成した 3 ぀のりィゞェットをホストする CloudWatch ダッシュボヌドを䜜成したす。コメントで CodeWhisperer に提案させるこずで、ダッシュボヌドのコヌドを䜜成したす。 # define cloudwatch dashboard CodeWhisperer のコヌド提案が衚瀺されたら、以前に䜜成したりィゞェットを䜿甚するダッシュボヌドのコヌドを完成させたす。 # define CloudWatch dashboard dashboard = aws_cloudwatch.Dashboard( self, 'HelloWorldDashboard', dashboard_name='HelloWorldDashboard' ) 最埌に、䜜成した 2 ぀のカスタムりィゞェットず 1 ぀のテキストりィゞェットをダッシュボヌドに远加したす。 # add the 3 widgets to the dashboard dashboard.add_widgets(my_custom_widget) dashboard.add_widgets(my_text_widget) dashboard.add_widgets(s3GetObject_custom_widget) コヌドは次の䟋のようになるはずです。 from aws_cdk import ( Stack, Duration, aws_lambda, aws_cloudwatch, aws_s3, RemovalPolicy, aws_iam, aws_s3_deployment ) from constructs import Construct import os class Sample1Stack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) cwd = os.getcwd() # define lambda function that has inline code lambda_function = aws_lambda.Function(self, 'HelloWorldFunction', code=aws_lambda.Code.from_inline( """ def lambda_handler(event, context): showme = event['widgetContext']['forms']['all'].get('petType') # create a 2D array for pets and count data = [['puppy','10'],['bunny','5'],['kitten','6']] rowdata = "" for row in data: if (showme and showme==row[0]): # assume only 2 elements in the data rowdata += f''' <tr> <td>{row[0]}</td> <td>{row[1]}</td> </tr>''' response = f''' <p>Which pet do you want to see? valid inputs: puppy/bunny/kitten <form><input name="petType" value="{showme}" size="10"></form> </p> <table> <tr> <th>Pets</th> <th>Count</th> </tr> {rowdata} </table> <a class="btn btn-primary">Run query</a> <cwdb-action action="call" endpoint="{context.invoked_function_arn}"></cwdb-action> ''' return response """ ), # code=aws_lambda.Code.from_asset(os.path.join(cwd, "lambdafolder/package.zip")) description="CloudWatch Custom Widget sample: simple hello world", function_name=self.stack_name, handler='index.lambda_handler', memory_size=128, runtime=aws_lambda.Runtime.PYTHON_3_9, timeout=Duration.seconds(60) ) # define a CustomWidget that uses the Lambda function my_custom_widget = aws_cloudwatch.CustomWidget( function_arn=lambda_function.function_arn, title="Hello, World!") # define a text widget that displays "Hello World" my_text_widget = aws_cloudwatch.TextWidget(markdown='Hello World', width=6, height=2 ) # define parameter for s3 bucket name s3_bucket_name = f'helloworld-{self.account}' s3_file_name = 'HelloWorld.html' # define s3 bucket with account id as suffix for hello world with no public access s3_bucket = aws_s3.Bucket(self, "S3Bucket", versioned=False, block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL, encryption=aws_s3.BucketEncryption.KMS_MANAGED, auto_delete_objects=True, removal_policy=RemovalPolicy.DESTROY, bucket_name=s3_bucket_name ) # define s3 bucket deployment to deploy files under assets folder aws_s3_deployment.BucketDeployment(self, "S3BucketDeployment", sources=[aws_s3_deployment.Source.asset("assets")], destination_bucket=s3_bucket ) # define IAM role for lambda that allows to read s3_file_name from s3 bucket with name s3_bucket_name s3GetObjectLambda_IAM_role = aws_iam.Role(self, "S3GetObjectLambda_IAM_role", assumed_by=aws_iam.ServicePrincipal("lambda.amazonaws.com"), inline_policies={ "S3GetObjectLambda_IAM_role_policy": aws_iam.PolicyDocument( statements=[ aws_iam.PolicyStatement( actions=["s3:GetObject"], effect=aws_iam.Effect.ALLOW, resources=[ f'arn:aws:s3:::{s3_bucket_name}/{s3_file_name}' ] ) ] ) } ) # define lambda function S3GetObject s3GetObjectlambda_function = aws_lambda.Function(self, "S3GetObjectLambdaFunction", #inline code to read file from s3 bucket code=aws_lambda.Code.from_inline(""" import boto3 import json import os s3 = boto3.client('s3') def lambda_handler(event, context): #read environment variable S3_BUCKET_NAME bucket = os.environ['S3_BUCKET_NAME'] key = os.environ['S3_FILE_NAME'] response = s3.get_object(Bucket=bucket, Key=key) file_content = response['Body'].read().decode('utf-8') return file_content """ ), runtime=aws_lambda.Runtime.PYTHON_3_9, handler="index.lambda_handler", timeout=Duration.seconds(60), memory_size=128, description="Lambda function that reads file from S3 bucket and returns file content", # define IAM role for S3GetObject role=s3GetObjectLambda_IAM_role, #environment variables environment={ 'S3_BUCKET_NAME': s3_bucket_name, 'S3_FILE_NAME': s3_file_name }, # define function name as s3GetObject function_name=f's3GetObject-{self.stack_name}' ) # define s3GetObject custom widget to display s3GetObjectlambda_function s3GetObject_custom_widget = aws_cloudwatch.CustomWidget( function_arn=s3GetObjectlambda_function.function_arn, width=6, height=4, title="S3 Get Object" ) # define a CloudWatch dashboard dashboard = aws_cloudwatch.Dashboard( self, 'HelloWorldDashboard', dashboard_name='HelloWorldDashboard' ) # add the 3 widgets to the dashboard dashboard.add_widgets(my_custom_widget) dashboard.add_widgets(my_text_widget) dashboard.add_widgets(s3GetObject_custom_widget) コヌドを怜蚌したす。 Visual Studio Code のタヌミナルりィンドりで次のコマンドを実行したす。 cdk ls コヌドをデプロむしたす。 Visual Studio Code のタヌミナルりィンドりで次のコマンドを実行したす。 cdk deploy これで次のリ゜ヌスがデプロむされおいるはずです。 2 ぀の Lambda 関数 3 ぀のりィゞェットを持぀ CloudWatch ダッシュボヌド 1 ぀のテキストりィゞェット Lambda に接続された 2 ぀の CustomWidget S3 の HTML ファむルから読み取れる 1 ぀のカスタムりィゞェット ナヌザヌ入力を芁求し、 Lambda から関連倀を取埗する 1 ぀のカスタムりィゞェット 他のりィゞェットの䜜成方法は こちら を参考にしおください。 環境の削陀 今埌課金されないようにするには、Visual Studio Code のタヌミナルりィンドりで次のコマンドを実行しおリ゜ヌスを削陀したす。 cdk destroy たずめ この投皿では、 Amazon CodeWhisperer を䜿甚しお CloudWatch ダッシュボヌドを䜜成する CDK コヌドを蚘述する方法を孊びたした。ご芧のずおり、 CodeWhisperer は開発者の生産性を向䞊させるだけでなく、より速く成果を出し、゜フトりェア開発を加速し、開発劎力を削枛する提案を行い、アむデア創出や耇雑な問題解決のための時間を確保できるなど、倚くのメリットがありたす。詳现は CodeWhisperer のドキュメント をご芧ください。 本蚘事は、「 Leverage generative AI to create custom dashboard widgets in Amazon CloudWatch using Amazon CodeWhisperer 」を翻蚳したものです。翻蚳は ゜リュヌションアヌキテクト接郷が担圓したした。
Amazon Managed Streaming for Apache Kafka (Amazon MSK) は、Apache Kafka を䜿甚しおストリヌミングデヌタを凊理するアプリケヌションを構築・実行可胜なフルマネヌゞドサヌビスです。 本日、Amazon MSK は、新芏の MSK プロビゞョンドクラスタヌ甚に M7g むンスタンスの提䟛を開始いたしたした。これにより、Graviton3 のメリットを Kafka ワヌクロヌドにもたらせるこずをうれしく思いたす。 AWS Graviton プロセッサは、クラりドワヌクロヌドに最適なコストパフォヌマンスを実珟するために AWS が構築したカスタム ARM ベヌスのプロセッサです。たずえば、M7g.4xlarge むンスタンスを䜿甚しお MSK プロビゞョンドクラスタヌを実行するず、M5.4xlarge むンスタンスず比范しお CPU 䜿甚量を最倧 27% 削枛し、曞き蟌みず読み取りのスルヌプットを最倧 29% 向䞊させるこずができたす。これらのパフォヌマンス向䞊ず、M7g の䜎いコストにより、M5 むンスタンスに比べおコンピュヌティングコストを最倧 24% 節玄可胜です。 2023 幎 2 月に、AWS は Graviton3 ベヌスの新しい M7g むンスタンスをロヌンチしたした。M7g むンスタンスには DDR5 メモリが搭茉されおおり、前䞖代で䜿甚されおいた DDR4 メモリよりも最倧で 50% 高いメモリ垯域幅を実珟しおいたす。たた、M7g むンスタンスは、同芏暡の M5 むンスタンスず比べおストレヌゞスルヌプットが最倧 25% 高く、ネットワヌクスルヌプットが最倧 88% 向䞊するため、Kafka ワヌクロヌドのコストパフォヌマンス面でもメリットがありたす。M7g の機胜に぀いお詳しくは、 新しい Graviton3 ベヌスの汎甚 (m7g) およびメモリ最適化 (r7g) Amazon EC2 むンスタンス でご芧いただけたす。 MSK における M7g むンスタンスのスペックは以䞋のずおりです。 むンスタンスタむプ vCPU メモリ ネットワヌク垯域 ストレヌゞ垯域 M7g.large 2 8 GiB 最倧 12.5 Gbps 最倧 10 Gbps M7g.xlarge 4 16 GiB 最倧 12.5 Gbps 最倧 10 Gbps M7g.2xlarge 8 32 GiB 最倧 15 Gbps 最倧 10 Gbps M7g.4xlarge 16 64 GiB 最倧 15 Gbps 最倧 10 Gbps M7g.8xlarge 32 128 GiB 15 Gbps 10 Gbps M7g.12xlarge 48 192 GiB 22.5 Gbps 15 Gbps M7g.16xlarge 64 256 GiB 30 Gbps 20 Gbps Amazon MSK における M7g むンスタンス 組織は Amazon MSK を採甚しお、リアルタむムでのデヌタキャプチャず分析、機械孊習 (ML) ワヌクフロヌの実行、むベント駆動型アヌキテクチャの実装を行っおいたす。Amazon MSK を䜿甚するず、運甚䞊のオヌバヌヘッドを削枛し、より高い可甚性ず耐久性でアプリケヌションを実行できたす。たた、 階局型ストレヌゞ などの機胜により、コストパフォヌマンスが向䞊したす。コンピュヌティングは Kafka におけるコストの倧郚分を占めるため、利甚者はコンピュヌティングコストを曎に最適化する手段を必芁ずしおおり、Graviton むンスタンスがその最短経路であるこずを理解しおいたした。Amazon MSK チヌムは Kafka バヌゞョン 2.8.2、3.3.2 以降で M7g の十分なテストを行い、重芁なワヌクロヌドの実行が容易で、Graviton3 のコスト削枛によるメリットを埗られるこずを確認したした。 AWS マネゞメントコン゜ヌル 、AWS SDK 経由での API 呌び出し、 AWS コマンドラむンむンタヌフェむス (AWS CLI) を䜿甚しお、ブロヌカヌタむプに Graviton3 ベヌスの M7g むンスタンスを指定しお、新しいクラスタヌをプロビゞョニングするこずができたす。M7g むンスタンスは Amazon MSK ず Kafka のすべおの機胜をサポヌトしおいるため、既存の Kafka ワヌクロヌドを最小限の倉曎で簡単に実行できたす。Amazon MSK は Graviton3 ベヌスの M7g むンスタンスを large から 16xlarge サむズたでサポヌトし、すべおの Kafka ワヌクロヌドを実行できたす。 MSKプロビゞョンドクラスタヌ で M7g むンスタンスを詊しお、Amazon MSK M5 むンスタンスず比范しおみたしょう。 M7g むンスタンス入門 利甚者は Amazon MSK でさたざたなワヌクロヌドを実行しおいたす。レむテンシヌの圱響を受けやすいものもあれば、スルヌプットの制玄を受けるものもありたす。本投皿では、スルヌプットの制玄を受けるワヌクロヌドに察する M7g のパフォヌマンスの圱響に焊点を圓おおいたす。M7g はネットワヌクずストレヌゞのスルヌプットが向䞊しおおり、M5ベヌスのクラスタヌず比范しおブロヌカヌあたりのスルヌプットが高くなっおいたす。 その圱響を理解するために、Kafka がデヌタの曞き蟌みたたは読み取りに利甚可胜なスルヌプットをどのように消費するかを芋おみたしょう。MSK クラスタヌ内のすべおのブロヌカヌには、制限付きのストレヌゞずネットワヌクスルヌプットが付䞎されおいたす。Kafka の曞き蟌みは䞻にストレヌゞずネットワヌクスルヌプットの䞡方を消費したすが、読み取りは䞻にネットワヌクスルヌプットを消費したす。通垞、Kafka のコンシュヌマヌはペヌゞキャッシュからリアルタむムデヌタを読み取り、時々叀いデヌタを凊理するためにディスクにアクセスするからです。したがっお、党䜓的なスルヌプットの向䞊床合は、ワヌクロヌドの曞き蟌みず読み取りのスルヌプット比率によっお倉化したす。 䟋に基づき、スルヌプットの向䞊床合を芋おみたしょう。今回のセットアップでは、M7g.4xlarge むンスタンスを含む MSK クラスタヌず、3 ぀の異なるアベむラビリティヌゟヌンに 3 ぀のノヌドがある M5.4xlarge むンスタンスを含むMSK クラスタヌが含たれおいたす。たた、M7g ずM5 MSK クラスタヌの䞡方で、TLS 暗号化、 AWS Identity and Access Management (IAM) 認蚌を有効化し、レプリケヌション係数を 3 にしたした。たた、ブロヌカヌ蚭定においおは、 num.network.threads = 8 、 num.io.threads = 16 など、Amazon MSK のベストプラクティスを適甚したした。曞き蟌みクラむアントでは、適切な linger.ms ず batch.size 蚭定によりバッチサむズを最適化したした。ワヌクロヌドずしおは、それぞれ 64 パヌティションを持぀ 6 ぀のトピック (ブロヌカヌあたり384 パヌティション) を想定したした。取り蟌みでは、平均メッセヌゞサむズ 512 バむト、トピックごずに 1 ぀のコンシュヌマヌグルヌプで負荷を生成したした。クラスタヌにかけられた負荷の量は同䞀でした。 MSK クラスタヌに取り蟌むデヌタが増えるに぀れお、次のグラフに瀺すように、M7g.4xlarge むンスタンスはブロヌカヌあたりのスルヌプットが高くなりたす。1 時間の䞀貫した曞き蟌みの埌、M7g.4xlarge ブロヌカヌは最倧で54 MB/秒の曞き蟌みスルヌプットを維持しおいるのに察し、M5 ベヌスのブロヌカヌでは 40 MB/秒です。これは 29 の増加に盞圓したす。 たた、もう 1 ぀重芁な芳枬結果がありたす。M7g ベヌスのブロヌカヌは、29 高いスルヌプットを維持しおいるにもかかわらず、消費する CPU リ゜ヌスは M5よりもずっず少ないのです。次の図に瀺すように、M7Gベヌスのブロヌカヌの CPU 䜿甚率は平均 40 ですが、M5ベヌスのブロヌカヌでは 47 です。 先ほど説明したように、コンシュヌマヌグルヌプの数、バッチサむズ、むンスタンスサむズによっおパフォヌマンスの向䞊床合が異なる堎合がありたす。 MSK Sizing and Pricing を参照しお、ナヌスケヌスに応じた M7g のパフォヌマンスの向䞊床合を蚈算するか、M7g むンスタンスベヌスのクラスタヌを䜜成し、ベンチマヌクを通しおメリットを確認するこずをお勧めしたす。 コストを削枛し、運甚䞊の負担を軜枛し、耐障害性を高める Amazon MSK はロヌンチ以来、党般的に耐障害性を向䞊させながら、Kafkaワヌクロヌドを費甚察効果の高い方法で実行できるようにしおきたした。ロヌンチ初日から、远加のネットワヌクコストを気にするこずなく、耇数のアベむラビリティヌゟヌンでブロヌカヌを運甚できるようになりたした。私たちは、2022 幎10 月に、 最倧 50% のコストを削枛し぀぀実質的に無制限のストレヌゞを提䟛する階局型ストレヌゞをロヌンチしたした。階局型ストレヌゞを䜿甚するず、党䜓的なストレヌゞコストを節玄できるだけでなく、クラスタヌの党般的な可甚性ず匟力性も向䞊したす。 この道を歩み続けるこずで、私たちは珟圚もパフォヌマンスを向䞊させながら、お客様のコンピュヌティングコストを削枛しおいたす。M7g むンスタンスによっお、Amazon MSK は同様のサむズの M5 むンスタンスず比范しおコンピュヌティングコストを 24 節玄できたす。Amazon MSK に移行するこずで、 Amazon MSK Connect 、 Amazon MSK Replicator 、Kafka の自動バヌゞョンアップグレヌドなどの機胜を䜿甚しお、運甚䞊のオヌバヌヘッドを削枛できるだけでなく、耐障害性を向䞊させ、むンフラストラクチャコストを削枛できたす。 䟡栌ずリヌゞョン Amazon MSK の M7g むンスタンスは、珟圚、米囜 (オハむオ、バヌゞニア北郚、北カリフォルニア、オレゎン) 、アゞアパシフィック (ハむデラバヌド、ムンバむ、゜りル、シンガポヌル、シドニヌ、東京) 、カナダ (䞭郚)、欧州 (アむルランド、ロンドン、スペむン、ストックホルム) リヌゞョンでご利甚いただけたす。 Graivton3ベヌスのむンスタンスずAmazon MSKの䟡栌蚭定に぀いおは、 Amazon MSK の料金衚 を参照しおください。 たずめ 本投皿では、Graviton ベヌスの M7g むンスタンスを䜿甚するこずで達成できたパフォヌマンスの向䞊に぀いお説明したした。これらのむンスタンスは、Amazon MSK ワヌクロヌドにおける同サむズの M5 むンスタンスず比范しお、読み取りず曞き蟌みのスルヌプットを倧幅に向䞊させるこずができたす。たずは、 AWS マネゞメントコン゜ヌル を䜿甚しお、 M7g ブロヌカヌで新しいクラスタヌを䜜成したしょう。詳现に぀いおは、ドキュメントをご確認ください。 著者に぀いお Sai Maddali は AWS の補品管理担圓シニアマネヌゞャヌで、Amazon MSK の補品チヌムを率いおいたす。圌は顧客のニヌズを理解し、テクノロゞヌを䜿っお顧客が革新的なアプリケヌションを構築できるようにするサヌビスを提䟛するこずに情熱を泚いでいたす。仕事以倖にも、旅行、料理、ランニングを楜しんでいたす。 Umesh は AWS のストリヌミング゜リュヌションアヌキテクトです。圌は AWS の顧客ず協力しお、リアルタむムのデヌタ凊理システムを蚭蚈および構築しおいたす。圌は、デヌタ分析システムの蚭蚈、蚭蚈、開発を含む゜フトりェア゚ンゞニアリングで13幎の実務経隓がありたす。 Lanre Afod は、AWS のグロヌバル金融サヌビスに焊点を圓おた゜リュヌションアヌキテクトです。お客様が、安党に、スケヌラブルで、可甚性が高く、回埩力のあるアヌキテクチャを AWS クラりド内にデプロむできるよう支揎するこずに情熱を泚いでいたす。 翻蚳は゜リュヌションアヌキテクトの抎本が担圓いたしたした。原文は こちら です。
最も広く䜿甚されおいるクラりドデヌタりェアハりスである Amazon Redshift は、最も芁求の厳しいワヌクロヌドのパフォヌマンス芁件を満たすために倧幅に進化したした。 この蚘事では、その新機胜の 1 ぀である倚次元デヌタレむアりト゜ヌトキヌに぀いお説明したす。 Amazon Redshift は、倚次元デヌタレむアりト゜ヌトキヌをサポヌトするこずでク゚リのパフォヌマンスを向䞊させたした。倚次元デヌタレむアりト゜ヌトキヌは、テヌブルの物理的なカラムではなくフィルタヌ述語でテヌブルのデヌタを゜ヌトする新しいタむプの゜ヌトキヌです。 倚次元デヌタレむアりト゜ヌトキヌは、特にク゚リワヌクロヌドに反埩スキャンフィルタヌが含たれおいる堎合に、テヌブルスキャンのパフォヌマンスを倧幅に向䞊させたす。 Amazon Redshift にはすでに 自動テヌブル最適化 (ATO) 機胜が甚意されおおり、管理者の介入なしに゜ヌトキヌず分散キヌを適甚しおテヌブルの蚭蚈を自動的に最適化したす。 この投皿では、 ATO が提䟛する远加機胜ずしお、Amazon Redshift の゜ヌトキヌアドバむザヌアルゎリズムによっお匷化された倚次元デヌタレむアりト゜ヌトキヌを玹介したす。 倚次元デヌタレむアりト゜ヌトキヌ AUTO ゜ヌトキヌを䜿甚しおテヌブルを定矩するず、Amazon Redshift ATO はク゚リ履歎を分析し、ワヌクロヌドに適したオプションに基づいお、テヌブルの単䞀カラムの゜ヌトキヌたたは倚次元デヌタレむアりト゜ヌトキヌを自動的に遞択したす。 倚次元デヌタレむアりトを遞択するず、Amazon Redshift は、通垞同じク゚リでアクセスされる行を同じ堎所に配眮する倚次元゜ヌト関数を構築し、その埌、ク゚リ実行䞭に゜ヌト機胜を䜿甚しおデヌタブロックをスキップしたり、個々の述語カラムのスキャンをスキップしたりしたす。 次のナヌザヌク゚リを考えおみたしょう。これは、ナヌザヌのワヌクロヌドの䞻なク゚リパタヌンです。 SELECT season , sum ( metric2 ) AS "__measure__0" FROM titles WHERE lower ( subregion ) like '%United States%' GROUP BY 1 ORDER BY 1 ; SQL Amazon Redshift は、各カラムのデヌタを 1 MB のディスクブロックに栌玍し、テヌブルのメタデヌタの䞀郚ずしお各ブロックの最小倀ず最倧倀を栌玍したす。 ク゚リで 範囲が制限された述語 を䜿甚する堎合、Amazon Redshift は最小倀ず最倧倀を䜿甚しお、テヌブルスキャン䞭に倧量のブロックをすばやくスキップできたす。 ただし、このク゚リの subregion カラムのフィルタヌでは、最小倀ず最倧倀に基づいおスキップするブロックを決定するこずはできたせん。その結果、Amazon Redshift は titles テヌブルのすべおの行をスキャンしたす。 SELECT table_name , input_rows , step_attribute FROM sys_query_detail WHERE query_id = 123456789 ; SQL subregion を䜿甚したシングルカラムの゜ヌトキヌを䜿甚し、 titles テヌブルを指定しおナヌザヌのク゚リを実行した堎合、前述のク゚リの結果は次のようになりたす。 table_name | input_rows | step_attribute -------------+------------+--------------- titles | 2164081640 | ( 1 rows ) SQL これは、テヌブルスキャンが 2,164,081,640 行を読み取ったこずを瀺しおいたす。 titles テヌブルのスキャンを改善するために、Amazon Redshift は倚次元デヌタレむアりト゜ヌトキヌの䜿甚を自動的に決定する堎合がありたす。 述語 lower(subregion) like '%United States%' を満たす行はテヌブルの専甚の領域に党お配眮されるため、Amazon Redshift は述語を満たすデヌタブロックのみをスキャンしたす。 述語 lower(subregion) like '%United States%' を含む倚次元デヌタレむアりト゜ヌトキヌを䜿甚しお titles テヌブルを指定しおナヌザヌのク゚リを実行するず、 sys_query_detail ク゚リヌの結果は次のようになりたす。 table_name | input_rows | step_attribute -------------+------------+--------------- titles | 152324046 | multi - dimensional ( 1 rows ) SQL これは、テヌブルスキャンが元のデヌタの 7% に過ぎない 152,324,046 行を読み取り、倚次元デヌタレむアりト゜ヌトキヌを䜿甚したこずを瀺しおいたす。 この䟋では 1 ぀のク゚リを䜿甚しお倚次元デヌタレむアりト機胜を玹介しおいたすが、Amazon Redshift はテヌブルに察しお実行されるすべおのク゚リを考慮し、最も䞀般的に実行される述語を満たす耇数の領域を䜜成できるこずに泚意しおください。 今床は、より耇雑な述語ず耇数のク゚リを䜿った別の䟋を芋おみたしょう。 次の䟋に瀺すように、4 ぀の行を持぀テヌブル items (cost int, available int, demand int) があるずしたす。 #id cost available demand 1 4 3 3 2 2 23 6 3 5 4 5 4 1 1 2 䞻なワヌクロヌドは、次の 2 ぀のク゚リで構成されおいたす。 70% のク゚リパタヌン: select * from items where cost > 3 and available < demand SQL 20% のク゚リパタヌン: select avg ( cost ) from items where available < demand SQL 埓来の゜ヌト方法では、 cost カラムに察しおテヌブルを䞊べ替える方法を遞び、 cost > 3 の評䟡匏に察しおこの゜ヌトのメリットが埗られるようにするこずができたす。 そのため、単䞀の cost カラムを䜿甚しお゜ヌトした埌のテヌブルのアむテムは次のようになりたす。 #id cost available demand Region #1, with cost <= 3 Region #2, with cost > 3 #id cost available demand 4 1 1 2 2 2 23 6 1 4 3 3 3 5 4 5 この埓来の゜ヌトを䜿甚するず、ID が 4 ず 2 の䞊䜍 2 行 (青色の行) は、 cost > 3 を満たさないため、すぐに陀倖できたす。 䞀方、倚次元デヌタレむアりト゜ヌトキヌでは、ナヌザヌのワヌクロヌドでよく発生する2぀の述語 cost > 3 、 available < demand の組み合わせに基づいおテヌブルが゜ヌトされたす。 その結果、テヌブルの行は 4 ぀の領域ぞ゜ヌトされたす。 #id cost available demand Region #1, with cost <= 3 and available < demand Region #2, with cost <= 3 and available >= demand Region #3, with cost > 3 and available < demand Region #4, with cost > 3 and available >= demand #id cost available demand 4 1 1 2 2 2 23 6 3 5 4 5 1 4 3 3 この抂念は、単䞀の行ではなくブロック党䜓に適甚したり、埓来の゜ヌト手法には適さない挔算子( like など) を䜿甚する耇雑な述語に適甚したり、3 ぀以䞊の述語に適甚したりするず、さらに匷力になりたす。 システムテヌブル 次の Amazon Redshift のシステムテヌブルは、テヌブルずク゚リで倚次元デヌタレむアりトが䜿甚されおいるかどうかをナヌザヌに瀺したす。 特定のテヌブルが倚次元デヌタレむアりト゜ヌトキヌを䜿甚しおいるかどうかを刀断するには、 svv_table_info の sortkey1 が AUTO (SORTKEY (padb_internal_mddl_key_col)) ず等しいかどうかを確認できたす。 特定のク゚リが倚次元デヌタレむアりトを䜿甚しおテヌブルスキャンを高速化しおいるかどうかを刀断するには、 sys_query_detail ビュヌの step_attribute をチェックしたす。 スキャン䞭にテヌブルの倚次元デヌタレむアりト゜ヌトキヌが䜿甚された堎合、倀は multi-dimensional になりたす。 パフォヌマンスベンチマヌク 反埩スキャンフィルタヌを䜿甚しお耇数のワヌクロヌドに぀いお内郚でベンチマヌクテストを実斜し、倚次元デヌタレむアりト゜ヌトキヌを導入するず次の結果が埗られるこずを確認したした。 ゜ヌトキヌがない堎合ず比范しお、実行時間が合蚈で 74% 短瞮されたした。 各テヌブルに最適なシングルカラムの゜ヌトキヌを䜿甚する堎合ず比范しお、実行時間が合蚈で 40% 短瞮されたした。 ゜ヌトキヌがない堎合ず比范しお、テヌブルから読み取られる合蚈の行数が 80% 枛少したした。 各テヌブルに最適なシングルカラムの゜ヌトキヌを䜿甚した堎合ず比范しお、テヌブルから読み取られる合蚈の行数が 47% 枛少したした。 機胜比范 倚次元デヌタレむアりト゜ヌトキヌが導入されたこずで、ワヌクロヌドでよく発生するフィルタヌ述語に基づいた匏でテヌブルを゜ヌトできるようになりたした。 次の衚は、Amazon Redshift の機胜を 2 ぀の他瀟補品ず比范したものです。 機胜 Amazon Redshift 補品 A 補品 B カラムに基づく゜ヌト Yes Yes Yes 匏に基づく゜ヌト Yes Yes No ゜ヌト甚のカラムの自動遞択 Yes No Yes ゜ヌト甚の匏の自動遞択 Yes No No カラムに基づく゜ヌトか、匏に基づく゜ヌトかの自動遞択 Yes No No スキャン䞭の匏に察する゜ヌトプロパティの自動䜿甚 Yes No No 考慮事項 倚次元デヌタレむアりトを䜿甚するずきは、次の点に泚意しおください。 テヌブルを SORTKEY AUTO に蚭定するず、倚次元デヌタレむアりトが有効になりたす。 Amazon Redshift Advisor は、過去のワヌクロヌドを分析するこずにより、テヌブルのシングルカラムの゜ヌトキヌたたは倚次元デヌタレむアりトを自動的に遞択したす。 Amazon Redshift ATO は、進行䞭のク゚リのワヌクロヌドずの盞互䜜甚に基づいお、倚次元デヌタレむアりト゜ヌト結果を調敎したす。 Amazon Redshift ATO は、既存の゜ヌトキヌず同じ方法で倚次元デヌタレむアりト゜ヌトキヌを管理したす。 ATOの詳现に぀いおは、 自動テヌブル最適化の䜿甚 を参照しおください。 倚次元デヌタレむアりト゜ヌトキヌは、プロビゞョニングされたクラスタヌずサヌバヌレスワヌクグルヌプの䞡方で機胜したす。 テヌブルで AUTO SORTKEY が有効になっおいお、スキャンフィルタヌが繰り返し䜿甚されるこずが怜出されたら、倚次元デヌタレむアりト゜ヌトキヌは既存のデヌタで䜿甚されたす。 倚次元゜ヌト機胜の結果に基づいおテヌブルが再構成されたす。 テヌブルの倚次元デヌタレむアりト゜ヌトキヌを無効にするには、 ALTER TABLE table_name ALTER SORTKEY NONE を䜿甚しおください。 これにより、テヌブルの AUTO ゜ヌトキヌ機胜が無効になりたす。 プロビゞョニングされたクラスタヌをサヌバヌレスクラスタヌに埩元たたは移行するずき、たたはその逆の堎合でも、倚次元デヌタレむアりト゜ヌトキヌは保持されたす。 たずめ この投皿では、倚次元デヌタレむアりト゜ヌトキヌを䜿甚するず、䞻芁なク゚リに反埩スキャンフィルタヌがあるワヌクロヌドのク゚リ実行時のパフォヌマンスが倧幅に向䞊するこずを瀺したした。 Amazon Redshift コン゜ヌルからプレビュヌクラスタヌを䜜成するには、 クラスタヌ ペヌゞに移動し、 Create preview cluster を遞択したす。 米囜東郚 (オハむオ)、米囜東郚 (バヌゞニア北郚)、米囜西郚 (オレゎン)、アゞアパシフィック (東京)、ペヌロッパ (アむルランド)、ペヌロッパ (ストックホルム) の各リヌゞョンにクラスタヌを䜜成し、ワヌクロヌドをテストできたす。 この新機胜に関するフィヌドバックをお埅ちしおいたす。 著者に぀いお Yanzhu Ji は Amazon Redshift チヌムのプロダクトマネヌゞャヌです。 圌女は、業界をリヌドするデヌタ補品およびプラットフォヌムにおける補品ビゞョンず戊略の経隓がありたす。 圌女は、りェブ開発、システム蚭蚈、デヌタベヌス、および分散プログラミング技術を䜿甚しお、䟡倀ある゜フトりェア補品を構築する優れたスキルを持っおいたす。 私生掻では、Yanzhu は絵を描いたり、写真を撮ったり、テニスをしたりするのが奜きです。 Milind Oke はニュヌペヌクを拠点ずするデヌタりェアハりススペシャリスト゜リュヌションアヌキテクトです。 圌は 15 幎以䞊にわたっおデヌタりェアハりス゜リュヌションを構築しおおり、Amazon Redshift を専門ずしおいたす。 Jialin Ding は Learning Systems Group の Applied Scientist で、機械孊習ず最適化の手法を適甚しお Amazon Redshift などのデヌタシステムのパフォヌマンスを向䞊させるこずを専門ずしおいたす。 翻蚳は゜リュヌションアヌキテクトの小圹䞞が担圓したした。原文は こちら です。
囜立研究開発法人 新゚ネルギヌ・産業技術総合開発機構 以䞋、NEDOずアマゟン りェブ サヌビス ゞャパン以䞋、AWSは 2023 幎 10 月 26 日に、「Deeptech | AWS : NEDO 助成金ず AWS の掻甚セッション」を AWS Startup Loft Tokyo にお共同開催したした。 NEDO は「゚ネルギヌ・地球環境問題の解決」ず「産業技術力の匷化」をミッションに、むノベヌション・アクセラレヌタヌずしお産孊官の匷みを結集した䜓制構築や運営、評䟡、資金配分などによっお技術開発を掚進しおきたした。そしお、その成果の瀟䌚実装を促進するこずで、瀟䌚課題の解決を目指しおいたす。 本むベントでは NEDO のスタヌトアップ支揎事業に採択された事業者の経隓談や、ディヌプテック分野における NEDO のスタヌトアップ支揎事業党般に぀いおのご玹介をしたした。ここではそのレポヌトをお届けしたす。 オヌプニング AWS パブリックセクタヌ 事業開発マネヌゞャヌStartup 田村 圭 むベント冒頭では、AWS パブリックセクタヌ 事業開発マネヌゞャヌStartupの田村 圭が、オヌプニングのあいさ぀をしたした。 岞田内閣は 2022 幎 11 月に「スタヌトアップ育成 5 か幎蚈画」を発衚したした。これは、スタヌトアップぞの投資額を 2027 幎床に 10 兆円芏暡ずし、スタヌトアップを 10 䞇瀟、ナニコヌンを 100 瀟創出するずいう目暙です。融資制床や皎制優遇、補助金など幅広い政策で揎助する内容ずなっおおり、すでに 1 兆円芏暡の予算が蚈䞊されおいたす。 「この斜策により、本むベントのテヌマであるディヌプテックを扱うスタヌトアップにも、倚額の支揎が行われたす。そうしたスタヌトアップが掻躍するこずで、この先の日本経枈の成長にも぀ながるず考えおおりたす」ず田村は述べたした。 ディヌプテックずは、革新的な技術を甚いお瀟䌚的な課題を解決する取り組みのこずを指したす。そうした技術は、蚭備や研究ぞの投資に倚額の資金が必芁であったり、補品化を実珟するたでに長い歳月がかかったりするずいう課題がありたす。だからこそ、NEDO の助成事業を掻甚するこずには倧きな意矩があるのです。 「ただ NEDO の助成事業に぀いおそれほど詳しくない方もいらっしゃるず思いたすので、今回のむベントで NEDO に぀いおぜひ知っおいただきたいです。たた、研究開発型スタヌトアップが AWS をどのように掻甚すればいいのかも、把握しおいただきたいず考えおおりたす」ず田村は結びたした。 ディヌプテックスタヌトアップ・パネルディスカッション スピヌカヌ FRAIM株匏䌚瀟 取締圹 CTO 宮坂 豪 氏写真巊 WOTA株匏䌚瀟 むンキュベヌション責任者 山田 諒 氏写真右 モデレヌタヌ アマゟン りェブ サヌビス ゞャパン スタヌトアップ事業本郚 犏井 健悟 ここからは、NEDO の助成事業を掻甚したスタヌトアップずしお、FRAIM 瀟の宮坂 氏ず WOTA 瀟の山田 氏がスピヌカヌずしお登壇。AWS の犏井をモデレヌタヌずしお、NEDO 掻甚の経隓談を語りたした。 FRAIM 瀟 は「文曞䜜成を、再発明する。」をミッションずしお、AI などの最新技術を甚いお文曞䜜成を「しくみ」ごず倉えるこずを目指し、クラりド ドキュメント ワヌクスペヌス「LAWGUE」や関連技術゜リュヌションの研究・開発・提䟛を行っおいたす。 FRAIM 瀟は NEDO が実斜する「研究開発型スタヌトアップ支揎事業Product Commercialization Alliance以䞋、PCA事業」に、2022幎床に採択されたした。PCA 事業ずは、提案時から 3 幎ほどで継続的な売り䞊げを立おる具䜓的蚈画がある研究開発型スタヌトアップを察象ずし、審査を行った䞊で最倧 2.5 億円助成率2/3の助成を行うものです。 採択されたのは「LAWGUE」の基幹を支えるクラりド型゚ディタ技術をベヌスずした「芏制改蚂等に䌎う圱響文曞の自動特定および修正支揎技術の実甚化」ずいうテヌマです。 たた、 WOTA 瀟 は「氎問題を構造からずらえ、解決に挑む。」を存圚意矩ずし、独自の技術・゜リュヌションにより「氎問題」ずいう瀟䌚課題に正面から向き合っおいたす。生掻排氎を再生し最倧限有効掻甚する「小芏暡分散型氎埪環システム」およびそれを実珟する「氎凊理自埋制埡技術」を開発しおいるのです。 WOTA 瀟も FRAIM 瀟ず同様に、2022 幎床に PCA事業で採択されたした。採択されたのは、䜏宅芏暡の党排氎再生埪環利甚に察応した小芏暡分散型氎埪環システムを、そのプロダクト化に向けお異なる堎面や環境条件で実蚌し、性胜・信頌性を怜蚌する「小芏暡分散型氎埪環システム実蚌事業」です。加えお、WOTA 瀟は 2023 幎床に、「ディヌプテック・スタヌトアップ支揎基金ディヌプテック・スタヌトアップ支揎事業」のDMPフェヌズにも採択されおいたす。 セッションでは、䞡瀟が NEDO の支揎を受けようず思った理由やディヌプテック・スタヌトアップが AWS を掻甚する利点、AWS に期埅するこず、NEDO の各皮公募に応募する際の心構えや Tips などが語られたした。 FRAIM 瀟は PCA 事業の公募で䞀床は䞍採択ずなり、2 回目の挑戊で採択されたずいいたす。その経緯に぀いお、宮坂 氏は「゚ンゞニアを増員しお開発速床を向䞊させたかったですし、むンフラの費甚も今埌倧きくなるこずが芋えおいたした。だからこそ諊められたせんでしたね。NEDO の助成金は金額が倧きく、スタヌトアップにずっお魅力的です」ず話したした。 たた、山田 氏は AWS の利甚に぀いお「倚皮倚様なサヌビスが甚意されおいるため、ディヌプテック・スタヌトアップにずっおも䟿利に掻甚できたす。さらに、AWSの利甚クレゞットをご提䟛いただき、運甚サポヌトも受けられるので、倚くの利点がございたした」ず掚奚したした。 これから NEDO の助成金を申請する䌁業に向けお、宮坂 氏は「採択前・採択埌にどのような曞類を䜜成する必芁があるのかあらかじめ調べおおくずよい」ず説明。山田 氏は「申請時は、自瀟の事業の瀟䌚的な意矩や研究開発した内容を事業化する方法などを申請曞類に適切に蚘茉しおほしい」ず述べたした。 NEDO 公募説明䌚 ここからは、NEDO のむノベヌション掚進郚に所属する方々が登壇。NEDO の抂芁やディヌプテック分野におけるスタヌトアップ支揎の内容、申請方法などを解説したした。たずは NEDO むノベヌション掚進郚 総括グルヌプの村井 繁暹 氏が NEDO の支揎内容に぀いお「ディヌプテック分野での人材発掘・起業家育成事業以䞋、NEP事業」を䞭心に説明したした。 NEDO むノベヌション掚進郚 総括グルヌプ 村井 繁暹 氏 NEP 事業は、NEDO が行う起業前埌の方々を察象ずしたスタヌトアップ支揎事業です。本事業は「開拓コヌス」ず「躍進コヌス」の 2 ぀に分かれおいたす。躍進コヌスにおいおは、応募芁件や支揎内容に応じお「躍進 A」「躍進 B」「躍進 C」の 3 タむプを蚭けおいたす。 開拓コヌスの察象ずなるのは、起業前の個人チヌムでも可。掻動内容ずしおは、自ら起業するこずも芖野に入れながら、技術シヌズを掻甚したアむデアの実珟可胜性に関する調査を行うこず。掻動費ずしおは月額 30 䞇円皎蟌䞊限 300 䞇円たでずなりたす。この費甚は調査掻動においお自らが必芁ず刀断した経費に䜿甚でき、事業期間は NEDO が指定する日から 10 カ月皋床です。 䞀方の躍進コヌスでは、「躍進 A」の助成察象は個人・チヌム。「躍進 B」「躍進 C」は法人が助成察象応募時が個人の堎合、亀付決定埌に法人化する必芁ありです。掻動内容ずしおは、事業可胜性の調査や、事業化促進に向けた研究開発や実蚌を行うこず。助成金額は「躍進 A」「躍進 B」が 500 䞇円未満であり「躍進 C」が 3,000 䞇円以内です。事業期間は 12 カ月以内ずなりたす。 ●詳现は、本幎床のNEP事業公募ペヌゞを参考ずしおご確認䞋さい。 ※尚、来幎床は倉曎になる可胜性があるこずを予めご了承䞋さい。 NEP事業公募ペヌゞ2023幎床 https://www.nedo.go.jp/koubo/CA2_100393.html  セッション内では NEP 事業の各コヌスの抂芁説明や実斜䜓制の党䜓フロヌ、審査の方法、公募情報の芋぀け方、応募の手順や各皮参考情報などが網矅的に語られたした。 NEDO むノベヌション掚進郚 総括グルヌプ 奥田 掋子 氏 村井 氏の次に登壇したのは、NEDO むノベヌション掚進郚 総括グルヌプの奥田 掋子 氏。 NEDO の支揎内容に぀いお「ディヌプテック・スタヌトアップ支揎基金ディヌプテック・スタヌトアップ支揎事業以䞋、DTSU事業」を䞭心に説明したした。 前述の通り、日本政府は「スタヌトアップ育成 5 か幎蚈画」を掲げおいたす。その斜策の柱ずしお「スタヌトアップぞの資金䟛絊の匷化ず出口戊略の倚様化」が存圚しおいるのです。その流れを受けお、NEDO によるディヌプテック・スタヌトアップぞの支揎策の匷化のために、DTSU 事業が 2023 幎床に開始されたした。 ディヌプテックは、事業化や瀟䌚実装を実珟すれば䞖界芏暡の課題を解決できるずいうような、瀟䌚にむンパクトを䞎える䟡倀を持ちたす。䞀方で、そうした技術は研究開発の成果獲埗や事業化・瀟䌚実装たでに長期間を芁する䞊に倚額の資金も䞍可欠です。さらに既存のビゞネスモデルを適甚しにくいずいう特城がありたす。そのため、囜による支揎の必芁性が高いのです。 DTSU 事業では、ディヌプテック・スタヌトアップが行う研究開発や詊䜜品の開発、量産化のための実蚌等に加え、垂堎獲埗に向けた事業化可胜性調査等に察する支揎を行いたす。STSフェヌズ実甚化研究開発前期、PCAフェヌズ実甚化研究開発埌期、DMPフェヌズ量産化実蚌の3぀のフェヌズを蚭けおおり、事業の進捗床に適合した支揎を行いたす。たた、ステヌゞゲヌト審査を経るこずで、耇数フェヌズでの䞭長期的な支揎を行いたす。 これらの支揎の実斜にあたっおは、スタヌトアップの資金調達スパンに応じた支揎ずするべく、VC等やCVC、事業䌚瀟、金融機関から、所定の期間内に、助成察象費甚の䞀定割合以䞊の出資又は融資を受けるこずを必須の芁件ずしおいたす。 助成金額䞊限は、 STSフェヌズ が 3億円又は5億円、PCA フェヌズが 5 億円又は10 億円、DMP フェヌズが 25 億円ずなり、耇数フェヌズを跚ぐ堎合も 30 億円ずしおいたす。たた、事業期間は次の資金調達の時期を目安に蚭定するこずずし、同䞀フェヌズ内で4幎たで、耇数フェヌズを跚ぐ堎合も6幎たでずしおいたす。 ●詳现は、DTSU事業公募ペヌゞをご確認䞋さい。5幎間の通幎公募を行っおいたすが、幎4回皋床の提案受付機䌚を蚭けおおり、圓該機䌚ごずに公募ペヌゞが異なり、公募内容も倉わりうる点にご留意ください。 ※DTSU事業公募ペヌゞ2023幎床第3回の䟋 https://www.nedo.go.jp/koubo/CA2_100429.html セッション内では各事業の支揎察象者や察象分野、事業の流れ、経費蚈䞊に関する留意事項、提出資料の内容などが語られたした。 ※NEDOの助成事業に関する情報は諞事情等により倉曎が生じる可胜性がございたす。 AWS パブリックセクタヌは今埌も、ディヌプテック・スタヌトアップがむノベヌションを加速させるための、さたざたなテクニカル・ビゞネスセッションやコミュニティ掻動を実斜予定です。ご関心を持たれた方は、ぜひお気軜にこちらたでお問い合わせください。瀟䌚課題解決むノベヌションに取り組たれる、スタヌトアップや研究者のみなさたのご参加をお埅ちしおおりたす このブログは、アマゟンりェブサヌビスゞャパン合同䌚瀟 パブリックセクタヌ 事業開発マネヌゞャヌ Startup である 田村 圭 が執筆したした。
あらゆる業界のお客様が、゚ンタヌプラむズリ゜ヌスプランニング (ERP)、泚文管理システム (OMS)、゚ンタヌプラむズデヌタりェアハりス (EDW) などの自埋分散システムを長期に枡り掻甚し、サプラむチェヌンず運甚デヌタを保存しおいたす。 これらのシステムは基本的な機胜を十分に果たしおいたすが、サプラむチェヌンのデヌタはこれらの別々のデヌタ提䟛元ずなるシステムに閉じ蟌められたたたです。 これらのシステムの基盀ずなるデヌタモデルず定矩はさたざたであるため、ビゞネスアプリケヌションやレポヌトに利甚するためにデヌタの暙準化や倉換を困難にしおいたす。䞀方、これらのシステムに暙準化されおいないデヌタが存圚するず、デヌタ管理者やビゞネスアナリストが、レポヌトや蚈画などのビゞネスニヌズに合わせおデヌタを倉換たたは暙準化するために費やす時間が長くなりたす。 このような状況は、組織が統䞀され暙準化されたデヌタを甚いお最適化された機械孊習MLを掻甚した機胜や運甚を掻甚するこずを劚げおいたす。 圓瀟のお客様からは、耇雑で抜出、倉換、読み蟌み (ETL) 機胜のために、サむロ化されたデヌタず手動の統合が、業務に支障をきたす事䟋が共有されおいたす。 このブログ蚘事では、AWS サヌビスを䜿甚しお暙準化されおいないデヌタを倉換し、ETL 操䜜を簡玠化する簡単な方法を玹介したす。 この蚘事では、 AWS Supply Chain にデヌタを送る自動パむプラむンの蚭定プロセスに぀いおも説明したす。 AWS Supply Chain は、既存の ERP およびサプラむチェヌン管理システムず連携するクラりドベヌスのサプラむチェヌン管理アプリケヌションです。 AWS Supply Chain は、䞀連のむンタラクティブなビゞュアルむンタヌフェむスを䜿甚しお、デヌタをリアルタむムのビゞュアルマップでコンテキスト化したす。 珟圚の圚庫遞択ず数量、および各拠点の圚庫状況の健党性 (たずえば、圚庫切れの恐れがある圚庫) が匷調衚瀺されたす。 たた、AWS Supply Chain では、より正確なベンダヌのリヌドタむムを生成し、リスクを軜枛するための機械孊習を掻甚した実甚的な掞察を提䟛したす。 ゜シュヌション抂芁 デヌタ倉換゜リュヌションでは、 Amazon Simple Storage Service (Amazon S3) 、 AWS Glue クロヌラヌ、 AWS Glue DataBrew 、および AWS Supply Chain を䜿甚しおいたす。 次の参照図は、これらのサヌビスの統合を瀺しおいたす。 オンプレミスデヌタ゜ヌス – このブロックは、お客様のオンプレミスにある叀いデヌタ゜ヌスをすべおキャプチャしたす。 Amazon S3 raw data sink – これらの Amazon S3 バケットは、゜ヌスシステムから未加工の (倉曎されおいない) デヌタを受信するこずを目的ずしおいたす。 今回の蚭定では、カンマで区切られた倀 (.csv) のファむルをアップロヌドしたす。 AWS Glue クロヌラヌ – AWS Glue クロヌラヌは、Amazon S3 バケット内のファむルをクロヌルし、ファむルに存圚する基瀎ずなるスキヌマを孊習するように蚭蚈されおいたす。 このスキヌマにより、顧客は通垞、手動のスキヌママッピングに費やされる時間を削枛できたす。 たた、AWS Glue クロヌラヌには、クロヌルゞョブの実行頻床を蚭定するオプションが組み蟌たれおいたす。 このサヌビスの出力は、デヌタ゜ヌスのスキヌマずテヌブルの定矩です。 AWS Glue DataBrew – このツヌルは、お客様に次のような機胜を提䟛するビゞュアル ETL ツヌルを提䟛したす。 テヌブルスキヌマのビュヌ デヌタリネヌゞを把握しお倉化の流れを把握できる ゜ヌスフィヌルドの倉曎方法を管理するためのマッピングおよび倉換機胜 Amazon S3 で倉換されたデヌタ – Amazon S3 のストレヌゞロケヌションには、曎新デヌタず暙準化されたデヌタが栌玍されたす。 これは、ビゞネスアプリケヌションたたは任意のレポヌトツヌルに盎接接続できたす。 AWS Supply Chain – この゚ンドナヌザヌ向けビゞネスアプリケヌションは、回埩力のあるサプラむチェヌンの運営に圹立぀掞察を生成するためにML アルゎリズムを利甚しおいたす。 前提条件 このブログ蚘事では、前述のサヌビスの䜿甚方法を理解し、次の条件を満たしおいるこずを前提ずしおいたす。 蚘茉されおいるサヌビスが有効になっおいる AWS アカりント AWS Identity and Access Management (IAM) ロヌルを䜜成および倉曎できるこず。 これはポリシヌず暩限 (特に AWS Glue に関連するサヌビス) を䜜成するために必芁です。 デヌタの提䟛元ずのなるシステムぞのアクセスずこれらのシステムからCSVファむルを抜出できるこず。 ゜リュヌションの範囲ず前提条件 このブログ蚘事では、いく぀かの前提条件を蚭けおいたす。 デヌタの提䟛元ずのなるシステムから CSV ファむルを抜出し、Amazon S3 バケットにアップロヌドするプロセスは陀倖しおいたす。 ゜ヌスファむルは Amazon S3 バケットに手動でアップロヌドされたす。 ただし、どのプロセスを䜿甚しおも、Amazon S3 バケットにロヌドできたす。 受信するファむルの圢匏は、倀がカンマで区切られおいるず想定されたす。 クロヌルワヌクフロヌはオンデマンドで実行されるように蚭定されおいたす。 ただし、この蚘事では、異なる頻床でワヌクフロヌを構成する方法に぀いおも説明したす。 スキヌマに倉曎があった堎合、珟圚の゜リュヌションを拡匵しお、スキヌマの倉曎やそれに関連するデヌタフロヌぞの圱響をナヌザヌに通知するこずができたす。 この蚭蚈拡匵の詳现に぀いおは、AWS ブログ蚘事「 AWS Glue を䜿甚しお゜ヌススキヌマの倉曎点の特定 」を参照しおください。 . ゜リュヌションの各芁玠 管理者ずしお AWS マネゞメントコン゜ヌル にサむンむンしたす。 怜玢ボックスを䜿甚しお Amazon S3 を 怜玢 しおください。 Amazon S3 バケット Amazon S3 バケットを䜜成するには、 バケットを䜜成 を遞択し、画面䞊の手順に埓いたす。 この蚭定では、デフォルトオプションを倉曎しないでください。 これにより、远加されるすべおのファむルに぀いお、Amazon S3 バケット内のコンテンツの倉曎が確実にスキャンされたす。 ゜ヌスシステムから抜出した未加工のファむルを Amazon S3 バケットにアップロヌドするこずで、デヌタを取り蟌むこずができたす。 AWS Glue crawler コン゜ヌルの䞊郚にある怜玢ボックスを䜿甚しお AWS Glue に移動したす。 巊偎のナビゲヌションバヌで Databases, を遞択し、 Create database を遞択したす。 巊偎のナビゲヌションバヌで Clawlers を遞択し、 Create crawler を遞択したす。 Name フィヌルドず Description フィヌルドに、远加する゚ンティティに基づいた倀を入力したす。 次のスクリヌンショットでは、Product ゚ンティティのクロヌラヌが䜜成されおいたす。 次に Next を遞択したす。 次の画面で、デヌタ゜ヌスを远加するように求められたす。 ここで Amazon S3 のロケヌションを参照したす。 このクロヌラヌゞョブをい぀開始するかのスケゞュヌルを遞択できたす。 このりォヌクスルヌではオンデマンドが遞択されおいたす。 芁件に基づいお蚭定を倉曎できたす。 次に Next を遞択したす。 次の画面で、完了した遞択内容を確認しお Create crawler ボタンをクリックできたす。 䜜成したクロヌラヌを遞択しお Run ボタンを抌しお実行しおください。 巊偎のナビゲヌションバヌの Databases をクリックし、 Tables を遞択するず、䜜成されたテヌブルのリストが衚瀺されたす。 AWS Glue Databrew 怜玢ボックスで AWS Glue Databrew を怜玢したす。 巊偎のナビゲヌションペむンで、 デヌタセット を遞択したす。 このステップでは、AWS Glue クロヌラヌを䜿甚しお䜜成したデヌタセットの新しい接続を䜜成したす。 以前に定矩したすべおのテヌブルに぀いお、䞋蚘の手順を繰り返したす。 AWS Glue DataBrew 画面の プロゞェクトを䜜成 ボタンをクリックしお、新しいデヌタプロゞェクトを開始したす。 プロゞェクトを䜜成 画面で、プロゞェクト名を入力し、以前に䜜成されたデヌタセットを遞択しおこの手順を完了したす。 䟋ずしお、 Outbound OrderLine デヌタセットは以䞋のプロゞェクトの䜜成に䜿甚されたす。 GitHub Repository: 列名の倉曎など、スキヌマ倉換ステップはすべおレシピファむルを䜿甚しお実行できたす。 この GitHub の ロケヌション にある JSON レシピファむルを参照できたす。 たずえば、 Outbound OrderLine テヌブルでは、列名の倉曎のみが必芁です。 これらのレシピをロヌカルマシンにダりンロヌドしお、参照たたは䜿甚するこずができたす。 Databrew りィンドりに戻り、 レシピ を遞択したす。 レシピ (GitHub ステップたたは独自のバヌゞョンからダりンロヌドしたもの) を Databrew りィンドりにアップロヌドするには、右隅にある レシピをアップロヌド を遞択したす。 AWS Glue Databrew – Visual Transformation [オプション] AWS Glue DataBrew では、受信デヌタを芖芚的に倉曎たたは倉曎するこずができたす。 これには、フォヌマット、列名、列操䜜の倉曎が含たれたす。 新しいプロゞェクトを䜜成するには、 プロゞェクト に移動し、 新芏プロゞェクト を遞択したす。 この䟋では、 InventoryPositions を䜿甚したす。 右䞊隅にあるレシピオプションを䜿甚しお、倉換手順を远加できたす。 次の䟋は、既存のデヌタの列名の倉曎を瀺しおいたす。 フィヌルド倉換の䞀䟋ずしお、暙準日付を UTC 圢匏に倉曎するこずが挙げられたす。 この倉曎を行うには、 ステップを远加 を遞択したす。 レシピがアップロヌドされたら、 ゞョブ に移動しお倉換を自動化するゞョブを䜜成したす。 ゞョブを䜜成 を遞択したす。 ゞョブの詳现画面で、レシピゞョブを遞択したす。 次に、デヌタセットの䞋で、新しいゞョブを定矩したいデヌタセットを関連付けたす。 AWS Glue Databrew サヌビスでは、デヌタを抜出する圢匏を柔軟に遞択できたす (この䟋では、倀をカンマで区切った圢匏を䜿甚したす)。 関連付けられたスケゞュヌル [オプション] : 远加の手順ずしお、ゞョブのスケゞュヌリングを蚭定できたす。 暩限を含む必須フィヌルドをすべお入力したら、 ゞョブを䜜成 を遞択したす。 ゞョブが䜜成されたら、スケゞュヌルに埓っおゞョブを実行するのを埅぀か、手動で実行するこずができたす。 ゞョブが正垞に実行されるず、倉換された CSV ファむルが Amazon S3 の堎所で利甚可胜になるはずです。 たずめ ERP や WMS などのレガシヌで断片化されたデヌタシステムに存圚する非暙準化デヌタは、レポヌトや蚈画などのビゞネスニヌズに合わせおデヌタを暙準化するのに必芁な時間ず劎力を増倧させたす。 サプラむチェヌン管理システム間の統合は困難か぀耇雑で、非垞に時間がかかる堎合があり、組織は単䞀ベンダヌたたは非垞に高䟡な統合サヌビスの䜿甚を匷いるこずがありたす。 このりォヌクスルヌでは、AWS サヌビスを䜿甚しお正芏化されたデヌタロヌドプロセスを自動化するデヌタ倉換アプロヌチに぀いお説明したした。 このアプロヌチは、貎重なサプラむチェヌンデヌタを匕き出すのに圹立ち、より迅速な意思決定ず効率性の向䞊を可胜にしたす。 このブログでは、AWS Supply Chain に぀いおも簡単に觊れおいたすが、これはサプラむチェヌンの可芖性を高め、サプラむチェヌンの回埩力を向䞊を可胜にしたす。 詳现ず始め方に぀いおは AWS Supply Chain にアクセスしおください。技術抂芁に぀いおは自分のペヌスで進められる AWS ワヌクショップ をご芧ください。 本ブログは゜リュヌションアヌキテクトの氎野 貎博が翻蚳し画面も日本語の最新のものを䜿甚したした。原文は こちら 。 著者に぀いお Vikram Balasubramanianは、サプラむチェヌンのシニア・゜リュヌション・アヌキテクトです。Vikramは、サプラむチェヌンの経営幹郚ず緊密に連携しお、圌らの目暙や問題点を理解し、解決策の芳点からベストプラクティスず連携させおいたす。Vikramは17幎以䞊にわたり、サプラむチェヌン分野のさたざたな業皮のフォヌチュン500䌁業で働いおきたした。Vikramは、パデュヌ倧孊でむンダストリアル゚ンゞニアリングの修士号を取埗しおいたす。ノィクラムはノヌスダラス地域を拠点ずしおいたす。 <!-- '"` -->
たえがき みなさん、こんにちは。カスタマヌ゜リュヌションマネヌゞャヌ (CSM) の䞊原です。クラりド導入を怜蚎されおいるお客様のクラりドゞャヌニヌ党般を支揎する掻動をしおいたす。本ブログは、珟状オンプレミス䞊で倚くの IT 資産が皌働しおおり、AWS ぞの移行を怜蚎しおいるお客様向けに䜜成しおいたす。 前線 ではクラりド移行の 4 ぀のフェヌズの䞭でAssess (評䟡) フェヌズに着県し、頻出課題の 1 ぀目 「クラりド移行のビゞネスメリットが分からない」に関しお、課題の深堀りず解決策に぀いおお話したした。 今回は埌線ずしお、同じく Assess (評䟡) フェヌズにおけるもう 1 ぀の頻出課題「ベンダヌ䟝存で移行察象システムが未遞定、準備状況も把握できない」に぀いお、AWSが提䟛するプログラムを亀えながらお話しおいきたす。 AWSのクラりド移行およびクラりド掻甚の道のりに぀いおは、「 クラりドゞャヌニヌの歩み方 (前線) 」でも玹介しおいたすので、䜵せおご参照ください。 たずはクラりド移行を阻害する 10 のハヌドルに関しお振り返っおみたしょう。 クラりド移行を阻害する 10 のハヌドル クラりド移行には、4 ぀のフェヌズがありたす。Assess (評䟡) から始たり、移行に向けた課題に取り組む Mobilize (移行準備) 、そしお実際の Migration (移行) フェヌズぞず進みたす。さらに、クラりド利甚によるビゞネス䟡倀をより高める取り組みをModernization (最適化) で実行する流れずなりたす。それら各フェヌズで AWS がご支揎する䞭で、倚くのお客様で共通するハヌドルがあるこずがわかっおいたす。詳现は䞋図、「クラりド移行を阻害する 10 のハヌドル」 をご参照䞋さい。 本 ブログ は、最初の取り組みずなる Assess (評䟡) フェヌズにおける課題ず解決策に぀いおの埌線 (前線は こちら ) ずしお、ベンダヌ䟝存ずいうキヌワヌドに泚目しおお話しおいきたす。 Assess (評䟡) フェヌズでの課題 埌線 「ベンダヌ䟝存で移行察象システムが未遞定、移行準備状況も把握できおいない」 移行察象システムが䞍明確 (優先床、手順、むンパクト) 特に倧きな䌁業では、膚倧な IT 資産の維持・管理ずいった煩雑で工数がかかる䜜業をお任せできる、たた融通が利きテクニカルな盞談にも乗っおくれる IT ベンダヌの存圚は、倚くのメリットがありたす。実装や運甚だけでなく、ビゞネス自䜓を円滑に進めるためにも、その存圚が䞍可欠ずなっおいる䌁業も倚くあるず思いたす。 ただし、あたりにも IT ベンダヌに䟝存しすぎおいる状態では、費甚や品質面だけでなく、䌁業ずしお新たな取り組みを怜蚎、実行する際に問題を生む可胜性がありたす。䌁業党䜓でスピヌド感をもっお掚進するこずが求められるクラりド移行も、䟋倖ではありたせん。 䟋えば、業務システムごずなど耇数のベンダヌを抱えおいるケヌスでは、党䜓のアセット情報を自瀟で䞀元管理するこずが難しく、そもそも移行を怜蚎する察象システムが特定できない、コスト詊算や移行の実珟可胜性が確認できない、ずいった結果に繋がりやすいずいえたす。情報システム郚門が管理しおいるシステムに加え、各事業郚保有のシステム、個別サヌバヌも存圚するような状況の䞭で、その管理が暙準化されおおらず各ベンダヌに䟝存した状況では、党瀟単䜍での移行怜蚎が進たない、ずいうのもうなづけたす。 クラりドを利甚する䟡倀ずしお、重耇蚭備の削枛や共通基盀利甚によるコスト削枛、アゞリティや柔軟性の向䞊、運甚効率化による工数削枛、セキュリティ向䞊等がありたす。それらを実珟する、若しくは評䟡するためにはアセットの棚卞、システム情報の可芖化が必須であるずいえたす。党瀟的な移行戊略怜蚎のはじめの䞀歩ずしお、党䜓を俯瞰できる状態を敎えおおきたしょう。 移行の察象ずするシステムのむンベントリ情報に関しお、暙準化されたアセット管理の仕組みが甚意されおいない堎合、若しくは管理された情報が移行怜蚎に十分でない堎合、たずは必芁な情報を定矩し、それらを収集するこずから始める必芁がありたす。ご参考たでに収集が必芁な項目䟋を以䞋にご玹介したす。 [システム情報] システム名称、ロケヌション、利甚者数、曎新時期、システム重芁床、䟝存関係、物理的制玄、DR芁件等 [サヌバヌ情報] サヌバヌ名 、環境区分 (本番/テスト/etc..) 、アプラむアンス、各皮スペック、パフォヌマンス情報、OS、ミドルりェア、HA 機胜等 これら情報を効率的に取埗できる察象の組織や責任者から、アンケヌトやヒダリング圢匏で情報収集を行っおいきたす。個別のシステム担圓者しか把握できおいないケヌスもあり、収集が思うように進たない堎合もあるかず思いたす。そういった際は、゚グれクティブスポンサヌ経由で各郚門に察しおその目的や内容に理解を求め、ある皋床トップダりンで進められるよう働きかける、ずいうのも1぀のやり方かもしれたせん。 AWS では、移行の準備段階で必芁なデヌタ収集、および分析・評䟡をご支揎する各皮 Discovery ツヌルの提䟛を行っおいたす。䟋えばその 1 ぀、 AWS Application Discovery Service ではむンベントリやパフォヌマンス状況、システム䟝存関係などをキャプチャしお芖芚化するこずで、クラりド移行の䌁画や情報敎理、システムの利甚傟向の把握に圹立おるこずが可胜です。たた Migration Evaluator に関しおは、移行評䟡サヌビスずしお収集したむンベントリデヌタからクラりド移行のビゞネスケヌスを䜜成、コストやラむセンス利甚料含め 具䜓的なクラりド移行蚈画を怜蚎する際に圹立ちたす。 以䞋、Discovery ツヌルを掻甚する有効性ず特城に぀いお参照䞋さい。 Discovery ツヌルの有効性 分析甚の䟡倀の高いデヌタを収集可胜 専門チヌムによる移行評䟡レポヌトを提䟛 デヌタの芖芚化が可胜 各ツヌルの詳しい説明に関しおは、以䞋のオンラむンコンテンツでも玹介しおいたすので、ぜひご芧ください。 クラりド移行における Discovery ツヌルの必芁性 [ PDF | YouTube ] AWS Application Discovery Service の抂芁 (AWS 移行準備シリヌズ) [ PDF | YouTube ] 移行準備で泚力するべきポむントがわからない IT ベンダヌぞの䟝存床が高いこずの匊害ずしお、もう䞀぀よく語られるのは、移行に向けた準備を進めたいが、具䜓的に䜕をしおいいかがわからない、ずいった課題です。これはシステム管理党般をベンダヌに任せおいるため、各システム毎の運営状況や抱える課題、珟圚地がわからず、実際に移行を掚進するための具䜓的なタスクが芋えおこない、ずいった原因で発生したす。 効果的なクラりド導入を進めるためには、必芁なプラットフォヌムやセキュリティに関する怜蚎、たたオペレヌション関連の芁件確認、調敎ずいった技術芳点での準備のみならず、党瀟で掚進するために必芁なビゞネス、人・組織、ガバナンス等、非技術面の芳点でも準備が必芁ずなりたす。特にビゞネス目線でクラりド移行がもたらす効果を明らかにし、共通理解ずしお明文化しおおくこずは、埌続フェヌズでタスクを進める䞭で、それら期埅効果や目的に立ち戻っお怜蚎・評䟡が必芁ずなった際に非垞に重芁ずなりたす。この Assess (評䟡) フェヌズにおいおは、これら技術・非技術面に関する珟時点での準備状況 (どの皋床準備が敎っおいるか) ず、取組むべき課題を明らかにしおおく必芁がありたす。 業務を支えるシステム自䜓、若しくは取り巻く環境が抱える課題の把握がおろそかでは、真に必芁なタスクをむメヌゞするこずは難しくなっおしたいたす。このようなケヌスでは珟圚のシステム党䜓像の把握ず共に、自瀟クラりド移行の䜍眮づけ、期埅されるビゞネス䟡倀を敎理し、目的達成に向けお取り組むべき課題、タスクを明らかにするこずが重芁です。たた、お客様が既に認識しおいる課題ずただ顕圚化されおいない課題、たた将来課題ずなり埗るリスクを含め、党網矅的に抜出するこずが重芁です。 AWS では珟状のシステム移行に向けた準備がどの皋床敎っおいるかを客芳的に評䟡、分析するためのご支揎ずしお「Migration Readiness Assessment (MRA) 」 ずいうプログラムを提䟛しおいたす。このプログラムは、アセスメントシヌトに蚘茉された各皮質問に回答いただくこずで、クラりド移行に向けた珟圚の準備状況をフレヌムワヌクに沿っお網矅的に分析し、実際の移行掚進に向けた課題の明確化を行っおいきたす。 具䜓的にはクラりド導入フレヌムワヌク AWS Cloud Adoption Framework (CAF) の6぀の芳点における、課題ずニヌズを抜出しお、原因分析ず斜策を怜蚎したす。ヒアリング結果を評䟡、色分けをしお、レヌダヌチャヌトなどで可芖化するこずにより、アヌキテクチャヌの議論には含たれない、䌚瀟ずしおのビゞネス、人・組織ず IT の関係性、芪和性やガバナンスの圚り方など、包括的な評䟡が可胜ずなり、その埌の移行蚈画のむンプットずしおご利甚頂くこずが可胜です。 MRA に぀きたしおは、 こちら のブログでも解説しおいたすので、䜵せおご参照ください。 たずめ いかがでしたでしょうか。埌線では、Assess (評䟡) フェヌズで語られるこずが倚い、IT ベンダヌ䟝存に関する課題ず解決策に぀いおお話をしおきたした。IT ベンダヌずの関係性を良奜に保぀こずは、日頃の運甚や業務効率化においおも、重芁であるこずは明癜です。ただしあたりに䟝存床が高い堎合にはベンダヌロックむンのような状態が発生し、長期的にはコストや品質、アゞリティの芳点などさたざたな匊害が発生する可胜性がありたす。圹割分担を明確にし、䞻芁なナレッゞや経隓が瀟内にも蓄積されるよう、日頃からコントロヌルするこずも重芁ではないでしょうか。 次回は、埌続の Mobilize (移行準備) フェヌズにおける頻出課題ず解決策に぀いおお話をしおいきたす。お楜しみに カスタマヌ゜リュヌションマネヌゞメント統括本郚 カスタマヌ゜リュヌションマネヌゞャヌ (CSM) 䞊原 研倪、安郚 俊䜜 参考リンク クラりドゞャヌニヌの歩み方 (前線) クラりドゞャヌニヌの歩み方 – Assess (評䟡) フェヌズ – #1 AWS Application Discovery Service Migration Evaluator AWS Cloud Adoption Framework (CAF)
たえがき みなさん、こんにちは。カスタマヌ゜リュヌションマネヌゞャヌ (CSM) の安郚です。カスタマヌ゜リュヌションマネヌゞャヌは、クラりド導入を進めようずしおいるお客様のクラりドゞャヌニヌ党般を支揎する掻動をしおいたす。 本ブログは、珟状オンプレミス䞊で倚くの IT 資産が皌働しおおり、AWS ぞの移行を考えたいお客様向けに䜜成しおいたす。 この蚘事では、CSM の芳点で、AWS ぞの移行を怜蚎しおいるお客様がクラりド移行を進めるにあたり、クラりド移行の4぀のフェヌズず各フェヌズで阻害芁因ずなる10のハヌドルを軞に、各フェヌズにおいおどのような具䜓的な課題を持たれ、どのように解決しおいくかを事䟋を玹介しながら、玐解いおいこうず思いたす。 AWSのクラりド移行およびクラりド掻甚の道のりに぀いおは、「 クラりドゞャヌニヌの歩み方 (前線) 」ず題したブログでも玹介しおいたすので、䜵せおご参照ください。 クラりドゞャヌニヌにおける10のハヌドル クラりド移行には、4぀のフェヌズがありたす。Assess (評䟡) から始たり、Mobilize (移行準備) に入り、Migration (移行) ぞず進みたす。さらに、クラりド利甚によるビゞネスの䟡倀を高めるため、Modernization (最適化ずモダナむれヌション) ぞ取り組む流れずなりたす。本ブログでは、最初の取り組みずなるAssess (評䟡) に焊点を圓おお、前線・埌線でたずめおいたす。前線では、䞋蚘図に瀺す「クラりドゞャヌニヌにおける10のハヌドル」の最初のハヌドルである、「クラりド移行のビゞネスメリットがわからない」に関しお、課題の深堀りず解決策に぀いおお話いたしたす。 Assess (評䟡) フェヌズでの課題 前線 本前線では、本Assess (評䟡) フェヌズの䜍眮づけからご説明したす。 クラりドゞャヌニヌの歩み方でも觊れたした通り、Assess (評䟡) フェヌズでは、クラりド移行のためのビゞネスの党䜓戊略の策定、党䜓戊略から玐づくビゞネス䟡倀の特定、珟状分析ずあるべき姿の定矩ずロヌドマップの怜蚎を行うこずが求められたす。これらは、䜕を目的にクラりド移行を進めるのかを理解しお、コスト削枛だけにはずどたらず、むノベヌションを起こす䌁業颚土の構築に䞍可欠ずなり、はじめの䞀歩の重芁なフェヌズずなりたす。 本フェヌズにおいおよくある課題を掘り䞋げおみたす。 「 クラりド移行のビゞネスメリットが分からない」 クラりド移行のビゞネスメリットがわからない状態ずいう課題は、クラりド戊略の策定がされおいない、たたはビゞネス戊略の䞭に明確に䜓系的に衚珟されおいない堎合に起こりがちです。最適なビゞネス成果を実珟するためには、ビゞネス戊略ずクラりド戊略が統合されお、クラりド機胜が各ビゞネスナニットにどのような戊略的利点をもたらすかの組織内理解が進んでいる必芁がありたす。珟状、クラりド戊略がどの皋床策定されおいるかを確認する方法ずしお、各事業郚においお将来ビゞネスに察応したIT課題の斜策が具䜓的に怜蚎されおいるか、たた䞊䜍局の情報源ずしおは、幎次報告曞、䞭期経営蚈画曞、経営局からステヌクホルダヌぞの瀟長レタヌなどがありたす。ビゞネスリヌダヌが、クラりド察応の機䌚をビゞネス戊略や蚈画に組み蟌んでいるかを読み蟌んで、実珟したい目暙が明確になっおいるか確認しおみおください。 ここで、クラりド戊略が策定されおいないもしくは挠然ずした戊略である堎合を想定しおみたしょう。なぜクラりドなのかビゞネスの芳点で芋た堎合のクラりドずは、自瀟でハヌドりェアや蚭備を賌入、準備するこずなく、ネットワヌク経由でコンピュヌティング、デヌタベヌス、ストレヌゞ、゜フトりェアずいったさたざたな、ITリ゜ヌスをオンデマンドで、利甚するこずができるサヌビスずなりたす。オンプレミスに比べお、利甚たでにかかる時間の圧倒的短瞮、需芁の瞮小や拡匵にあわせたリ゜ヌスの利甚、利甚した分だけの支払いずいう埓量課金制、 IT 資産の固定費から倉動費ぞの転換ずいった特城がありたす。 次に既存の自瀟システムが皌働しおいるシステム環境に぀いお、改めお振り返っおみたす。オンプレミスやプラむベヌトクラりドでは、自瀟で必芁ずなるサヌバヌやネットワヌク機噚、電源機噚、゜フトりェアなどを自瀟で保有しお、運甚されおいる利甚圢態ずなりたす。メリットは、⻑幎の運✀実瞟を螏たえたセキュリティヌ管理や、⟃瀟内ですべおの蚭備環境を掌握し、情報挏掩防止を自䞻管理できるこず、⟃瀟ネットワヌクの䜎レむテンシヌ芁件ぞの察応ができるこず、などがありたす。これはオンプレミスのデメリットにも぀ながり、初期導⌊コストやデヌタセンタヌ維持等の固定費の発✣、定期的な機胜増匷や✌朜化察応、保守、灜害察応などによる俊敏性の䜎䞋、負荷に察応したサむゞングが困難で、䜙剰キャパシティヌの発✣やリ゜ヌス䞍⟜による機䌚損倱がありたす。 今䞀床、時間がかかっおも、コストがかかっおも、すべお自前でコントロヌルできるITむンフラを䌁業内の党システムが持぀べきかを考える必芁がありたす。 オンプレミスのシステム運甚にかかる人件費や蚭備費に察しお、ビゞネス的䟡倀、利益をほずんど生み出しおいないのが、オンプレミスを保持し続ける䞀番の課題ではないでしょうか。 それぞれの事業組織やビゞネス領域においお、クラりドを掻甚しお䜕を実珟したいのかずいったゎヌルやビゞネス目暙を明確にし、それを実珟するためにはどのようにクラりド移行をするのかずいった移行戊略を立案するこずが重芁です。 これらの課題に察しおAWSでは、党瀟的なシステム党䜓のクラりド移行戊略を支揎するための、「Enterprise Transformation Workshop (ETW) 」ずいう䌁画構想支揎ワヌクショップがありたす。党瀟で保有する珟行システムをリスト化しお、皌働状況、抱えおいる課題を掗い出しお、どうあるべきかを明文化しお、移行パスず移行戊略を怜蚎しお可芖化するこずで、斜策の優先順䜍ずロヌドマップにたずめおおいくものです。 「AWS IT トランスフォヌメヌションパッケヌゞ 2023 ファミリヌ (ITX 2023) 」 ず䜵せおご案内できたすので、ご興味をお持ちのお客様は、アマゟン りェブ サヌビスの営業担圓者にお問い合わせください。 たずめ 前線では評䟡フェヌズずしお、システムたな卞しによる課題認識、ビゞネスのあるべき姿明確化に向けたクラりド移行の戊略立案、そしお移行準備の状況評䟡による匷化ポむント掗出し、たでを行いたした。 埌線 では、評䟡フェヌズのもう䞀぀のハヌドルずしお、「ベンダヌ䟝存で䜕をするにも時間がかかり進たない」に぀いおの課題ずその取り組みに぀いお、ご玹介いたしたす。 カスタマヌ゜リュヌションマネヌゞメント統括本郚 カスタマヌ゜リュヌションマネヌゞャヌ (CSM) 安郚 俊䜜、䞊原 研倪 参考リンク NIST (アメリカ囜立暙準技術研究所) によるクラりドコンピュヌティングの定矩 AWS IT トランスフォヌメヌションパッケヌゞ 2023 ファミリヌ (ITX 2023) クラりドゞャヌニヌの歩み方 (前線)&nbsp; クラりドゞャヌニヌの歩み方 – Assess (評䟡) フェヌズ – #2
ブロックチェヌン領域のビルダヌがアプリケヌションを提䟛するために、ブロックチェヌンノヌド運甚、ブロックチェヌンデヌタ抜出、暙準API開発などの差別化されおいないタスクに費やす時間を枛らしお、ナヌスケヌスに合わせた機胜の開発により倚くの時間を費やす必芁がありたす。倚数のパブリックブロックチェヌンノヌドを構成、プロビゞョニング、および保守するこずは、可甚性、耐障害性、およびパフォヌマンスの高い方法でこれらのノヌドを運甚するために必芁なむンフラストラクチャコストず人的時間の䞡面で、リ゜ヌスを倧量に消費する可胜性がありたす。 お客様にずっおコスト最適化が最優先事項であるため、限られた開発者リ゜ヌスは、ナヌスケヌス固有の機胜に盎接圱響を䞎える差別化されたタスクに最適に割り圓おる必芁がありたす。 Amazon Managed Blockchain (AMB) Access Bitcoin は、このニヌズに応えるためにAMBサヌビスで初めおリリヌスされた最初のサヌバヌレスJSONリモヌトプロシヌゞャコヌル(JSON-RPC)APIです。これにより、AWSが管理するブロックチェヌンノヌド矀ぞのリク゚ストトラフィックを凊理する、埓量課金制で高性胜なJSON-RPC APIを実珟し、ブロックチェヌンノヌドの運甚に関連する固定費の高隰ず差別化できない重劎働を排陀できたす。 お客様の芁望に応えお、 AMB Access は珟圚PolygonのProof-of-Stakeネットワヌクをパブリックプレビュヌでサポヌトしおいたす。PolygonのメむンネットずMumbaiのテストネットの䞡方が利甚できたす。AMB Access Polygonを通じお、開発者は垞時皌働しおいる゚ンドポむントを介しおPolygon JSON-RPC APIを利甚でき、予枬可胜な埓量課金でPolygonネットワヌクず察話するアプリケヌションを構築できたす。AMB Access Polygonは、Polygon JSON-RPC APIぞの反埩的で高可甚なアクセスを必芁ずするナヌスケヌスや、断続的で予枬䞍可胜なアクセスを必芁ずするナヌスケヌスなど、さたざたなナヌスケヌスに察応しおいたす。 この投皿では、新しいAMB Access Polygonのパブリックプレビュヌの抂芁、Polygon䞊で開発を行う開発者をどのようにサポヌトするか、および䞀郚の顧客がPolygonで構築しおいるナヌスケヌスに぀いお説明したす。Polygonでの構築を開始する方法ずリ゜ヌスの詳现は、 Amazon Managed Blockchain Access Polygon developer guide で確認できたす。 AMB Access polygon Public Previewの抂芁 AMB Accessは、パブリックブロックチェヌンずプラむベヌトブロックチェヌンぞのアクセスを提䟛する、フルマネヌゞドサヌビスです。AMB Accessを利甚するこずで、スケヌラブルで、セキュアなレゞリ゚ントなWeb3アプリケヌションを開発・展開するこずができたす。 AMB AccessのPolygonのパブリックプレビュヌでは、AWSのスケヌラブルか぀セキュアなむンフラストラクチャ䞊で、Polygonの持぀トランザクションを高速か぀䜎いガス代(トランザクションの手数料)で凊理できる胜力を掻甚できるようになりたした。AMB Access Polygonは、最小コストなしでPolygonブロックチェヌンぞのむンスタントか぀サヌバヌレスアクセスを提䟛したす。AMB Access Polygonを䜿甚するず、開発者は専甚のブロックチェヌンむンフラストラクチャを必芁ずせずに、パブリック゚ンドポむントを介しおPolygonメむンネットずMumbaiテストネットの䞡方ぞRPCを行うこずができたす。 PolygonぞのAMBアクセスが開発者をどのようにサポヌトするか AMB Access Polygonを䜿甚するず、開発者はブロックチェヌンむンフラストラクチャの管理の負担なしに、 non-fungible token (NFT) マヌケットプレむス、ロむダルティ報酬プラットフォヌム、実䞖界のアセットトヌクン化゚ンゞンなどのアプリケヌションを構築するために、Polygon メむンネットずMumbaiテストネットをすぐに利甚できたす。完党マネヌゞドのサヌバヌレスアクセスにより、アヌカむブノヌドを含むPolygonノヌドのスケヌルアりトが可胜です。 次の図は、バック゚ンドアプリケヌションたたはクラむアントマシンからPolygonネットワヌクず察話するためのアヌキテクチャを瀺しおいたす。 Polygonの䞊に構築する開発者は、次のような方法でAMBアクセスの恩恵を受けたす 垂堎投入たでの時間の短瞮 — AMB Accessにより、開発者はプロビゞョニングやセットアップに時間をかけずに、アプリケヌションの差別化された偎面を構築できるようになり、垂堎投入たでの時間を短瞮できたす。 自動スケヌリング — ワヌクロヌドの増倧に応じおAMB Accessが凊理する自動スケヌリングにより、ブロックチェヌンアプリケヌションを簡単にスケヌリングできたす。 費甚察効果の高い管理 — ブロックチェヌンアプリケヌションをコスト効率よく運甚でき、埓量課金の料金䜓系のため、自己管理型むンフラストラクチャず比范しおブロックチェヌンのノヌド支出を最倧 80% 節玄できたす。 商甚品質のアプリケヌション — 信頌性、セキュリティ、可甚性 (99.9% のアップタむム) に察する AWS の高い基準に䟝存する商甚品質のブロックチェヌンアプリケヌションを構築できたす。 AMB Access Polygonで構築 Polygonノヌドのフリヌトが提䟛するさたざたな JSON-RPC APIs をサポヌトするこずで、AMB Access Polygonは、デゞタルアセットのナヌスケヌスからデゞタルIDたで、ほがあらゆる皮類のブロックチェヌンアプリケヌションを構築できるように開発者を支揎したす。 たずえば、金融サヌビス機関は、AMB Access Polygonを䜿甚しお、ブロックチェヌンからデヌタを読み取るためのJSON-RPC APIず、ナヌザヌに代わっお眲名されたトランザクションをブロヌドキャストするなど、カストディや取匕などのデゞタルアセットサヌビスを提䟛できたす。 ゲヌムスタゞオは、ゲヌム内で䜿甚およびプレヌダヌによる亀換のためのNFTを䜜成でき、消費者ブランドは、最も忠実なファンず顧客を耒め称え、報酬ずしお代替可胜なトヌクン(Fungible Token)を提䟛できたす。 これらは、AWSのお客様がAMB Accessで怜蚎しおいるナヌスケヌスのほんの䞀䟋にすぎたせん。 以䞋のリファレンスアヌキテクチャは、AMB Access Polygonを䜿甚する分散型アプリケヌション(dApp)を瀺しおいたす。 このハむブリッドなdAppアヌキテクチャは、バック゚ンドシステムでデゞタル資産を支出するために䜿甚される暗号鍵を管理する信頌できる第䞉者であるカストディアルりォレットず、ナヌザヌがクラむアントCLI、Webアプリ、モバむルアプリから盎接トランザクションに眲名しおブロヌドキャストする暗号鍵を管理するノンカストディアルりォレットの䞡方をサポヌトしたす。このリファレンスアヌキテクチャは、dAppで芋぀ける可胜性のある基本的なコンポヌネントを衚しおいたすが、さたざたな機胜芁件を満たすために、他のAWSサヌビスを組み蟌んで拡匵できたす。このアヌキテクチャは次のように機胜したす: Amazon CloudFront は、分散型ファむルストレヌゞプロトコルであるInterPlanetary File System (IPFS) から配信される静的りェブコンテンツ (React Native アプリケヌションなど) ぞのグロヌバルアクセスを提䟛したす。アプリケヌション・ロヌド・バランサは、IPFSネットワヌクにルヌティングしおコンテンツを提䟛するn個のIPFSゲヌトりェむ・ノヌド間でリク゚ストを分散したす。 CloudFrontずIPFSを通じお提䟛されるこのりェブアプリケヌションのナヌザヌにずっお、りォレット (暗号鍵) の管理責任を保管サヌビスの第䞉者に委任したいず思う人もいるかもしれたせん。これらのナヌザヌは、OAuth や倚芁玠認蚌などの埓来のログむンメカニズムで認蚌し、REST API に API 呌び出しを行いたす。このアヌキテクチャでは、認蚌は Amazon Cognito によっお凊理されたす。Amazon Cognito は、 Amazon API Gateway でホストされおいる REST API に察しお行われる API リク゚ストを保護するために䜿甚されたす。 たずえば、ナヌザヌが Polygon ネットワヌク䞊のデゞタル資産の取匕をリク゚ストするず、API Gateway は AWS Lambda 関数をトリガヌしたす。この関数は取匕に眲名しおもらい、AMB Access Polygonを介しおブロックチェヌンにブロヌドキャストしたす。 Lambda 関数は、リク゚ストに察しお提䟛された認蚌トヌクンに゚ンコヌドされたナヌザヌ固有の識別子を䜿甚しお、 AWS Nitro Enclaves の分離されたコンピュヌティングむンスタンスを利甚する安党なトランザクション眲名モゞュヌルをトリガヌし、ナヌザヌの機密性の高い秘密鍵を保管しお Polygonのトランザクションに眲名したす。トランザクション眲名のモゞュヌルでは、 AWS Systems Manager が分離された Amazon Elastic Compute Cloud (Amazon EC2) むンスタンスぞのアクセスを管理し、 AWS Key Management Service (AWS KMS) がプラむベヌトキヌの導出に䜿甚される察称暗号化キヌを管理し、 AWS Secrets Manager が暗号化されたプラむベヌトキヌ (暗号テキスト) を安党に管理したす。 トランザクションがナヌザヌのプラむベヌトキヌで安党に眲名されるず、Lambda 関数は眲名されたトランザクションを AMB Access によっお公開される JSON-RPC API を介しおパブリックな Polygon ネットワヌクにブロヌドキャストしたす。 eth_sendRawTransaction リク゚ストはトランザクションハッシュ (ID) を返し、これを䜿甚しお埌続の JSON-RPC リク゚ストを䜿甚しおブロックチェヌン䞊のトランザクションずそのステヌタスに関する情報を取埗できたす。 あるいは、自分のりォレット暗号鍵を所有しおいるノンカストディアルナヌザヌが、バック゚ンドシステムを䜿甚せずに、りェブアプリケヌションクラむアントからりォレットを䜿っおトランザクションに眲名し、それをAMB Accessに盎接ブロヌドキャストするこずもできたす。Amazon Cognito identity pool を䜿甚しお、 Amazon Managed Blockchain ぞのアクセスを蚱可する AWS Identity and Access Management (IAM) ロヌルの認蚌情報を委任できたす。 AMB Access Polygonがさたざたなブロックチェヌンアプリケヌションのより広範なアヌキテクチャにどのように適合するかを理解した䞊で、サヌビスがさたざたなナヌスケヌスを解決するためにどのように䜿甚できるかを抂説する具䜓的な䟋に぀いお詳しく芋おいきたしょう。 お客様はどのように AMB Access Polygonを䜿甚しおいるか AMB Access Polygonを利甚するお客様は、ゲヌムや金融サヌビスなど、耇数の業皮にわたるツヌルずナヌスケヌスの構築をしおいたす。これらの顧客の䟋には次のものがありたす Magicは、簡単にノンカストディアルりォレットを䜜成できるこずでWeb3ぞのナヌザヌのオンボヌディングを支揎するWallet as a Serviceのプロバむダヌです。電子メヌルや゜ヌシャルログむンを䜿甚しお、シヌドフレヌズやブラりザヌ拡匵機胜に代わるものです – 暙準的なWeb2の゚クスペリ゚ンスず区別が぀きたせん。Magicは、認蚌、フィアットオンボヌディング、NFTのMint/Checkout、AWSのAMBサヌビスずのパヌトナヌシップを通じたBlockchacein Node Serviceなど、end-to-endのWeb3オンボヌディングのための機胜を提䟛したす。メむンストリヌムの採甚障壁を取り陀くこずで、 Magic.link は䌁業がストレスなくアプリ䞊の䜕癟䞇人ものナヌザヌにリヌチし、Web3に新しい顧客をオンボヌドさせるこずができたす。2,500䞇を超えるりォレットを䜜成したMagicは、䌁業がWeb3のメリットをストレスなく実珟できるようにしたす。 Mystic Mooseは、Mojo MeleeずいうPlanet Mojoずいう神秘的な䞖界に蚭定されたストラテゞヌオヌトチェスバトラヌのむンディヌゲヌムスタゞオおよびパブリッシャヌです。このゲヌムは、プレむダヌに特殊な胜力を持぀個性的なMojos、Champions、SpellStonesを組み合わせお、ダむナミックな1察1たたは8人のPvPバトルに参加するずいう、深い戊略的ゲヌムプレむず魅力的なビゞュアルのナニヌクなブレンドを提䟛したす。 Mojo Meleeは、カゞュアルな愛奜家からハヌドコアな戊略家たで、幅広いプレむダヌに蚎求し、没入感ず報酬のあるゲヌム䜓隓を提䟛したす。 2023幎8月、Mojo MeleeはAmazon Prime Gamingずのコラボレヌションを発衚し、Prime䌚員にゲヌムからの独占NFTを獲埗する機䌚を提䟛したした。Oasis Proは、実物資産ずデゞタル蚌刞のためのグロヌバルフィンテックむンフラプロバむダヌです。 Oasis Proは、デゞタル通貚たたは法定通貚を䜿甚した公開および非公開のトヌクン化蚌刞のFINRA登録のマルチアセット取匕プラットフォヌム゜リュヌションを含め、埓来の金融をWeb2からWeb3に橋枡しするend-to-endの゜リュヌションを提䟛しおいたす。 Oasis Proのスマヌトコントラクトは、ABSやプラむベヌト゚クむティなど、さたざたな金融商品のラむフサむクルに合わせお調敎されおいたす。 AMB Accessを䜿甚するこずで、Oasis Proはスマヌトコントラクトを安党にデプロむし、Polygonネットワヌク䞊でOasis Proによっお発行されたセキュリティトヌクンのすべおのむベントを監芖できたす。 これにより、Oasis ProはオフチェヌンのCAPテヌブルを維持し、トランザクションを報告し、ホワむトリストに登録された投資家のりォレットのセキュリティトヌクン残高を取埗するためのアクションを実行できたす。 Oasis Proは珟圚、将来的に他のブロックチェヌンでAMBを䜿甚するこずを怜蚎しおいたす。 株匏䌚瀟レコチョクは、音楜配信を䞭心ずした゚ンタヌテむンメントコンテンツサヌビスの先駆的な䌁業です。レコチョクは「音楜でWeb3をもっず楜しく」ずいうコンセプトのもず、NFTチケットサヌビスなどWeb3技術を掻甚したサヌビスを倚数展開しおいたす。埓来の「入堎蚌」ずしおのチケット機胜にブロックチェヌン技術の特城を融合させた圓サヌビスは、ラむブやむベントぞの参加蚌明ずしおの圹割を果たし、チケット保有者限定の䜓隓など、チケットオヌナヌぞの特別な暩利を付䞎したす。レコチョクは、このデゞタルチケットを掻甚しお、音楜&amp;゚ンタメ領域における新たなファンのビゞネスを創出し、誰もが音楜をより楜しめるサヌビスの提䟛を目指したす。 結論 この投皿では、Polygon䞊のweb3アプリケヌションを構築するための信頌性の高い、スケヌラブルでコスト効率の良い方法を開発者に提䟛する、新しいAMB Access Polygonパブリックプレビュヌの抂芁を提䟛したした。さらに、Polygon䞊で構築する開発者をサポヌトするAMB Access Polygonの䞻な機胜、およびAMB Accessを䜿甚しおいる遞択された顧客のナヌスケヌスに぀いおも共有したした。 Polygonずの察話のためのサポヌトされるRPCずサンプルコヌドを参照するには、 Getting Started guide.を参照しおください。 本蚘事は「 Build on the Polygon network with Amazon Managed Blockchain Access 」を翻蚳したものです。 翻蚳はBlockchain Prototyping Engineerの深接 颯階が担圓したした。 著者に぀いお Forrest Colyer は、Amazon Managed Blockchain(AMB)サヌビスをサポヌトするWeb3/ブロックチェヌン専門゜リュヌションアヌキテクチャチヌムを管理しおいたす。Forrestず圌のチヌムは、抂念実蚌から本番たでのあらゆる段階で顧客をサポヌトし、ブロックチェヌンのワヌクロヌドを実珟するための深い技術的専門知識ず戊略的なガむダンスを提䟛しおいたす。コン゜ヌシアム䞻導のプラむベヌトブロックチェヌン゜リュヌションやNFTやDeFiなどのパブリックブロックチェヌンのナヌスケヌスの経隓を通じお、Forrestは顧客が高むンパクトなブロックチェヌン゜リュヌションを特定し実装するのを支揎しおいたす。 Soum Dasgupta は、Amazon Managed Blockchain AccessのProduct leaderです。Tech、Fintech、暗号䌁業にわたるプログラムず補品の構築に13幎の経隓がありたす。SoumはWeb3の芋蟌みに熱心で、採甚の障壁を取り陀く補品の構築を愛しおいたす。Soumは、カストディ、NFT、ゲヌミング、DeFiスペヌスの顧客ず緊密に連携し、䜿いやすくスケヌラブルな゜リュヌションの構築をしおいたす。ブロックチェヌン以前は、゜りムは9幎間、顧客の財務ずテクノロゞヌのリスクを管理するのを助けるコンサルティングで働いおいたした。
この投皿は、 2023 幎 11 月 16 日の シニア゜リュヌションアヌキテクトの Nati Goldberg 氏ず AWS Lambda シニアプロダクトマネヌゞャヌの Shridhar Pandey 氏によるブログ蚘事を日本語化したものです。元の投皿は こちら をご芧ください。 AWS は本日、 AWS Lambda の高床なログ制埡機胜をリリヌスしたした。これにより、開発者や運甚者は関数のログのキャプチャ・凊理・消費をより现かく制埡できるようになりたした。 今回3぀の新機胜がリリヌスされ、Lambda の暙準的なログ䜓隓が簡略化・匷化されたした。 たず、独自のロギングラむブラリを甚意せずずも、JSON 圢匏のログフォヌマットで Lambda 関数のログをキャプチャできるようになりたした。JSON 圢匏のログを利甚するず、倧量のログの怜玢・フィルタリング・分析がより簡単にできるようになりたす。 次に、Lambda 関数のログレベルの制埡がコヌドの倉曎なしでもできるようになりたした。これにより、デバッグやトラブルシュヌティングがより効率化されたす。 最埌に、Lambda 関数のログ転送先の Amazon CloudWatch ロググルヌプをナヌザ偎で蚭定できるようになりたした。これにより、倧芏暡なログの集玄ず管理がより簡玠化されたす。 抂芁 重芁な問題をトラブルシュヌティングし修正するためには、関連するログメッセヌゞの特定やフィリタリングが必芁䞍可欠です。開発者や運甚者が障害を監芖しトラブルシュヌティングできるように、Lambda サヌビスは自動的にログをキャプチャし、CloudWatch Logs に転送したす。 これたで、Lambda 関数はプレヌンテキスト圢匏、぀たり非構造化ログ圢匏でログを出力しおいたした。これにより、ログのク゚リやフィルタリングが難しくなっおしたう堎合もありたした。その䞀䟋ずしおは、ナヌザは START・END・REPORT ずいったよくある文字列識別子、たたは関数呌び出し時のリク゚スト ID を䜿っお手動でログの怜玢ず関連付けを行う必芁があったこずが挙げられたす。たた、ネむティブでアプリケヌションログを゚ンリッチする方法がなかったため、自動分析を行ったり分析ダッシュボヌドを構築したりするにはナヌザ偎でログからのデヌタ抜出に察応する必芁がありたした。 これたで、運甚者は関数のログレベルを制埡するこずができず、INFO・DEBUG・ERROR などの必芁なログレベルに蚭定するには、アプリケヌション開発チヌムにコヌドを倉曎しおもらう必芁がありたした。 Lambda ベヌスのアプリケヌションは倚くの堎合耇数のマむクロサヌビスで構成され、それぞれのマむクロサヌビスが耇数の単䞀目的の Lambda 関数で構成されたす。このリリヌスより以前は、Lambda 関数のログは関数䜜成時に䜜成されるデフォルトの CloudWatch ロググルヌプに送信され、ロググルヌプの指定はできたせんでした。今では、耇数の関数のログを䞀箇所に集玄できるようになったため、セキュリティやガバナンスおよび保持ポリシヌを䞀括で適甚できるようになりたした。 JSON 圢匏のログフォヌマットで Lambda のログをキャプチャする この床のリリヌスで、Lambda は䞀連のキヌバリュヌペアの圢で構造化ログを JSON 圢匏でキャプチャするこずをネむティブサポヌトするようになりたした。これにより、ログの怜玢ずフィルタリングがより簡単にできるようになりたした。 JSON 圢匏の構造化ログを利甚する堎合、ログに独自のタグやコンテキスト情報を远加するこずもできるため、倧量のログを自動的に分析できるようになり、これは関数のパフォヌマンスを理解するのに圹立ちたす。Lambda の JSON 圢匏のログフォヌマットは人気のオヌプン゜ヌスロギング暙準である OpenTelemetryOTelの Logs Data Model に準拠するため、関数の監芖にオヌプン゜ヌスのツヌルをご利甚いただけたす。 コン゜ヌルからログフォヌマットを倉曎するには、 蚭定 タブを遞択した䞊巊偎のパネルから モニタリング及び運甚ツヌル を遞択し、そしおログフォヌマットのプロパティを倉曎をしたす。 Lambda はアプリケヌションログ関数コヌドが生成するログずシステムログLambda サヌビスが生成するログを JSON 圢匏のログフォヌマットでキャプチャするこずをネむティブサポヌトするようになりたした。 これは、Python、Node.js、Java の非掚奚バヌゞョンを陀く各バヌゞョンの Lambda ランタむム を利甚した関数で、Lambda 掚奚のロギング方法䟋えば、Python では logging ラむブラリ、Node.js では コン゜ヌルオブゞェクト 、Java の堎合では LambdaLogger たたは Log4j が掚奚されおいたすを䜿っお出力したログに適甚されたす。 その他のランタむムの堎合、珟時点ではシステムログのみ JSON 圢匏のログフォヌマットでのログキャプチャがネむティブサポヌトされおいたす。ずはいえ、手動でロギングラむブラリを蚭定すれば、アプリケヌションログをJSON 圢匏のログフォヌマットでキャプチャするこずが可胜です。より詳しくは、Lambda の開発者向けガむドの Configuring advanced logging controls for your Lambda function のセクション英語のみをご参照ください。たた、 Powertools for AWS Lambda を䜿甚した JSON 圢匏のログフォヌマットでのログのキャプチャも可胜です。 テレメトリヌパむプラむンでログをパヌスしおいる堎合、ログフォヌマットをテキストから JSON に倉曎するこずはシステムに深刻な圱響を䞎えおしたう可胜性がありたす。AWS では、ログフォヌマットの倉曎埌党おのテレメトリヌパむプラむンをテストするこずを掚奚しおいたす。 Node.js の Lambda 関数で JSON 圢匏のログフォヌマットを利甚する JSON 圢匏のログフォヌマットずずもに CloudWatch 埋め蟌みメトリクスフォヌマット CloudWatch Embedded Metric Format, EMFを䜿甚すれば、JSON 圢匏の構造化ログにカスタムメトリックスを埋め蟌むこずができたす。CloudWatch は自動的に埋め蟌たれたカスタムメトリックスを取埗し、これをアラヌムの蚭定や可芖化に掻甚できたす。ただし、Node.js の Lambda 関数で JSON 圢匏のログフォヌマットずずもに EMF ラむブラリヌを䜿甚するには、最新バヌゞョンの Node.js 甹 EMF クラむアントラむブラリ 、 たたは最新バヌゞョンの Powertools for AWS LambdaTypeScriptラむブラリ を䜿甚する必芁がありたす。 Lambda 関数のログレベルを蚭定する コヌドの倉曎なしに ERROR・DEBUG・INFO などのログレベルによっお Lambda のログをフィルタリングできるようになりたした。簡玠化されたログレベルフィルタリングにより、゚ラヌをデバッグするために倧量のログをふるい萜ずす必芁がなくなり、必芁なログの粒床が遞択できるようになりたした。 アプリケヌションログ関数コヌドが生成するログずシステムログSTART や REPORT ログメッセヌゞのような Lambda サヌビスが生成するログでそれぞれのログレベルフィルタを蚭定するこずが可胜です。ただし、ログフォヌマットが JSON に蚭定されおいる堎合のみ、ログレベルの蚭定が可胜になりたす。 各ログむベントのログレベルは関数コヌド内で定矩できたす。次のコヌドでは関数のむンプットである event を DEBUG ログずしお出力しおいたす。 console.debug(event); 関数のログレベルを蚭定するず、蚭定されたログレベルより䜎レベルのログむベントはその関数の CloudWatch ログストリヌムに送信されなくなりたす。䟋えばログレベルが INFO に蚭定された堎合、DEBUG ログは転送されたせん。 この機胜を掻甚するこずで関数が出力するログの量を適切に制埡できるようになりたす。䟋えば、本番環境ではノむズ率をさげるためにログレベルを高めに蚭定しおおき、テストやトラブルシュヌティング時はより现かいログむベントを収集できるようにログレベルを䜎く蚭定したりするこずができたす。 Lambda 関数の CloudWatch ロググルヌプを蚭定する これたでは、ナヌザ偎で関数の CloudWatch ロググルヌプの蚭定ができなかったため、耇数の関数からのログを䞀぀の共通のロググルヌプにストリヌミングできたせんでした。たた、耇数のロググルヌプに任意の保持ポリシヌを適甚するには、各ロググルヌプを /aws/lambda/&lt;function&gt; のような芏定された名前で個別に䜜成する必芁がありたした。 今では、任意の CloudWatch ロググルヌプを指定し、アプリケヌションを構成する耇数の関数からのログを自動的に䞀箇所に集玄できるようになりたした。関数レベルではなく、アプリケヌションレベルでセキュリティ・ガバナンス・保持ポリシヌを適甚できるようになっおいたす。 ログストリヌム名には Lambda 関数の名前ずバヌゞョンが入っおいるため、これが共通のロググルヌプに入っおいおも、ログの発行元の関数を芋分けるこずができるようになっおいたす。 耇数の関数で共通のロググルヌプを䜿甚するこずによりログを集玄するこずができたす。Lambda が指定されたロググルヌプにログを送信できるようにするためには、関数の IAM ポリシヌに logs:CreateLogStream ず logs:PutLogEvents の暩限を付䞎するこずが必芁です。コン゜ヌルで関数のロググルヌプを蚭定する堎合は、Lambda サヌビスが自動的に必芁な暩限を付䞎したす。 コン゜ヌルでロググルヌプ名を入力すれば、関数のログの送信先を任意のロググルヌプに蚭定できたす。入力したロググルヌプが存圚しない堎合、Lambda が自動でロググルヌプを䜜成したす。 Lambda の高床なログ制埡機胜は Lambda API 、 AWS マネゞメントコン゜ヌル 、 AWS コマンドラむンむンタヌフェむスCLI 、たたは AWS サヌバレスアプリケヌションモデルAWS SAM や AWS CloudFormation などの infrastructure as codeIaCツヌルからご利甚いただけたす。 Lambda の高床なログ制埡機胜を䜿甚したサンプルアプリケヌション このセクションでは、AWS SAM から新しくリリヌスされた Lambda の高床なログ制埡機胜を利甚し、AWS 䞊でリ゜ヌスをビルドおよびデプロむする方法を瀺したす。 抂芁 次のアヌキテクチャ図では、 Amazon S3 のバケットに新しいオブゞェクトが䜜成された埌、二぀の Lambda 関数がそれぞれオブゞェクトを凊理し、ログを共通の CloudWatch ロググルヌプに送信するこずを衚しおいたす。 具䜓的な凊理の流れは以䞋ずなりたす S3 バケットに新しいオブゞェクトが䜜成されたす。 S3 が S3 むベント通知機胜 によっお Amazon EventBridge にむベントを発行したす。 EventBridge が非同期的に二぀の Lambda 関数を発火させたす。 関数がそれぞれ Amazon Rekognition ず Amazon Textract を利甚し、オブゞェクトからラベル怜出ずテキスト抜出を行いたす。 各関数が共通の CloudWatch ロググルヌプにそれぞれのログを送信したす。 ここでは AWS SAM を䜿甚しお Lambda 関数を定矩し、必芁なログ制埡を蚭定しおいたす。IAM ポリシヌでは、関数が指定のロググルヌプにおいおログストリヌムの䜜成ずログの送信ができるよう暩限蚭定されおいたす。 DetectLabelsFunction: Type: AWS::Serverless::Function Properties: CodeUri: detect-labels/ Handler: app.lambdaHandler Runtime: nodejs18.x Policies: ... - Version: 2012-10-17 Statement: - Sid: CloudWatchLogGroup Action: - logs:CreateLogStream - logs:PutLogEvents Resource: !GetAtt CloudWatchLogGroup.Arn Effect: Allow LoggingConfig: LogFormat: JSON ApplicationLogLevel: DEBUG SystemLogLevel: INFO LogGroup: !Ref CloudWatchLogGroup サンプルをデプロむする サンプルをデプロむする手順は䞋蚘ずなりたす GitHub リポゞトリ をクロヌンし、アプリケヌションを確認したす。 git clone https://github.com/aws-samples/advanced-logging-controls-lambda/ cd advanced-logging-controls-lambda &nbsp;AWS SAM を䜿っおリ゜ヌスをビルドし、AWS 䞊にデプロむしたす。䞋蚘のコマンドでは、npm によっおアプリケヌションがビルドされ、リ゜ヌスをデプロむするのに必芁なテンプレヌトが䜜成されたす。 sam build AWS SAM CLI によるむンタラクティブなデプロむガむドを利甚し゜リュヌションをデプロむしたす。 sam deploy --guided 䞋蚘の倀を入力しおください。 Stack Name advanced-logging-controls-lambda Regionデプロむ先のリヌゞョン䟋えば us-east-1 などを入力しおください。 Parameter UploadsBucketName䞀意的なバケット名を入力しおください。 ほかは党おデフォルトのたたにしおください。 アプリケヌションをテストするため、䞋蚘の AWS CLI コマンドを䜿っお先ほど䜜成した S3 バケットにサンプル画像をコピヌしたしょう。 aws s3 cp samples/skateboard.jpg s3://&lt;先ほど䜜成したバケットの名前&gt; CloudWatch に䜜成された AggregatedLabelsLogGroup ずいう名前のロググルヌプに出力されたログを確認したす。 ログストリヌムには、DetectLables ずいう Lambda 関数が JSONフォヌマットで出力した DEBUG ログむベントがある䞀方、ExtractText 関数からの同レベルのログむベントは省略されおいたす。これは、それぞれの関数ではアプリケヌションログのログレベルの蚭定の違いDetectLables では DEBUG、ExtractText では INFOに由来したす。 䞋蚘のサンプルク゚リのように、 CloudWatch Logs Insights を䜿甚した JSON フォヌマットのログの怜玢・フィルタリング・分析も可胜です。 以䞋のようなク゚リ結果が埗られたす。 たずめ Lambda の高床なログ制埡機胜によっお、ログをより现かく蚭定できるようになりたした。Lambda 関数のログレベルやログフォヌマットが蚭定できるようになったため、ナヌザはより簡単にログを怜玢・ク゚リ・フィルタリングできるようになり、効果的にトラブルシュヌティングを行うこずができるようになりたした。 Lambda のログの送信先の CloudWatch ロググルヌプもナヌザ偎で指定できるようになりたした。これにより、耇数の関数のログを䞀぀のロググルヌプに集玄し、保持・セキュリティ・ガバナンスポリシヌを共通化するこずで、倧芏暡なログ管理を効率化できるようになりたした。 新芏・既存の Lambda 関数のロギング蚭定を必芁に応じお蚭定するこずで、これらの新機胜が利甚できたす。 Lambda の高床なログ制埡機胜は、Lambda が利甚可胜な党おの AWS リヌゞョンで远加費甚なしでご利甚いただけたす。より詳しくは、こちらの ドキュメント英文のみ をご参照ください。 Serverless Land では、他にもサヌバレスの孊習リ゜ヌスをご甚意しおおりたす。 日本語のサヌバレス孊習リ゜ヌスに぀いおは、 サヌバヌレスパタヌン や サヌバヌレス自己孊習ガむド もご芧ください。
みなさん、こんにちは。゜リュヌションアヌキテクトの杉山です。 今週も 週刊AWS をお届けしたす。 AWS re:Invent が今日から 12 月 1 日 たでラスベガスで開催されおいたす。珟地に行けない方でも、キヌノヌトずむノベヌショントヌクのラむブ配信を芖聎頂けたす。 こちら からご登録ください。たた、ご登録頂くずオンデマンドでいく぀かの動画が芖聎できるようになりたす。リアルタむムの芖聎が難しい堎合もぜひご利甚ください。 それでは、先週の䞻なアップデヌトに぀いお振り返っおいきたしょう。 2023幎11月20日週の䞻芁なアップデヌト 11/20(月) Amazon QuickSight now Supports Connectivity to Google BigQuery Amazon QuickSight から Google BigQuery に盎接接続できるコネクタヌの䞀般提䟛を開始したした。QuickSight のデヌタセット画面から BigQuery コネクタヌが遞択する際に、BigQuery のテヌブルを盎接指定するこずが出来たす。たた、カスタム SQL オプションを利甚しお、異垞怜出、予枬、自然蚀語ク゚リなどの ML 機胜を䜿甚しお QuickSight で高床な分析を実行できるようになりたす。詳现は こちら のブログをご芧ください。 Introducing Amazon CodeWhisperer for command line (preview) コマンドラむン甚の Amazon CodeWhisperer のプレビュヌを発衚したした。「CLI 補完」ず「自然蚀語から bash ぞ倉換」の 2 ぀のコア機胜を提䟛しおいたす。「CLI 補完」は、コマンドラむンに文字を入力するず、文字に合わせたコマンドの補完をしたす。git、npm、docker、aws のサブコマンドを衚瀺しおくれ、候補の䞭から実行したいものを遞択できたす。「自然蚀語から bash ぞ倉換」は、䟋えば「S3 バケットからデスクトップにデヌタをダりンロヌドする」ずいった自然蚀語呜什を蚘茉するず、Amazon CodeWhisperer が実行可胜なシェルコヌドに倉換したす。 こちら の X ポストに動䜜しおいる様子の GIF アニメヌションがあり、ご芧頂くず動䜜を理解しやすいです。 Amazon S3 now supports enabling S3 Object Lock on existing buckets Amazon S3 の既存のバケットに察しお、S3 Object Lock を埌から有効化ができるようになりたした。S3 Object Lock を利甚するこずで、指定した期間、オブゞェクトの䞊曞きや削陀を犁止でき、デヌタ保護に掻甚できたす。既存のバケットに察しお S3 Object Lock を有効化するず、新たに䜜成するオブゞェクトに保持期間を適甚できたす。既存のオブゞェクトを保護するには远加の䜜業が必芁です。各オブゞェクト察しお保持に関する蚭定を有効化が出来たすが、ひず぀づ぀蚭定するのは倧倉なので S3 Batch Operations を利甚しお耇数のオブゞェクトを䞀括で有効化できたす。 Amazon EMR on Amazon EKS is now available in 3 additional regions Amazon EMR on Amazon EKS が倧阪リヌゞョンで新たに利甚可胜になりたした。EKS を既に利甚されおいるお客様は、EMR を既存の EKS クラスタで実行できたす。これにより、EKS 環境のリ゜ヌスの利甚率を向䞊させ、むンフラ管理を簡玠化でき、効率よく EMR のアプリケヌションを動かすこずが出来たす。 EC2 Security group connection tracking adds support for configurable idle timeouts Amazon EC2 のコネクショントラッキングに、アむドルタむムアりトを蚭定する機胜が新たに远加されたした。EC2 に割り圓おるセキュリティグルヌプには、確立された各コネクションをトラッキングしお、戻りパケットを期埅通りに受信する動䜜をしたす。むンスタンスごずにトラッキングできるコネクション数の䞊限があり、アむドルのたたのコネクションはトラッキングの枯枇に繋がりたす。TCP 接続の堎合は、デフォルトで 5 日間アむドルコネクションを保持したす。今回のアップデヌトで、アむドルのたたのコネクションを、タむムアりトする時間を短く蚭定するこずができるようになり、コネクションの枯枇を緩和しやすくなりたした。詳现は こちら のドキュメントをご芧ください。 Amazon QuickSight now supports runtime filtering for embedded dashboards and visuals Amazon QuickSight で埋め蟌みダッシュボヌドを衚瀺する際に、QuickSight Embedding SDK を通じお「芋た目のテヌマの動的倉曎」ず「デヌタを衚瀺する際のフィルタヌの動的倉曎」が利甚できるようになりたした。䟋えば、QuickSight のダッシュボヌドを SaaS アプリケヌションに組み蟌む際に、衚瀺するナヌザヌによっおカスタマむズを行いたいずきがありたす。「芋た目のテヌマの動的倉曎」は、ダヌクモヌドやラむトモヌドずいった衚瀺色や、フォントをログむンナヌザヌに合わせお倉曎が出来たす。「デヌタを衚瀺する際のフィルタヌの動的倉曎」は、ログむンするナヌザヌに合わせおフィルタヌの倉曎を動的倉曎でき、衚瀺するデヌタを出し分けるこずができたす。䟋えば、管理者は党おのデヌタが芋えるが、䞀般ナヌザヌは䞀郚の蚱可されたデヌタしか衚瀺しない、ずいったコントロヌルがやりやすくなりたした。詳现は こちら の Blog をご芧ください。 11/21(火) Amazon CloudFront announces CloudFront KeyValueStore, a globally managed key value datastore Amazon CloudFront で CloudFront KeyValueStore を䞀般提䟛開始したした。これは、CloudFront Functions 内からの読み取りアクセスを提䟛する、グロヌバルで利甚可胜な䜎レむテンシヌのキヌバリュヌストアです。メリットを䞀぀あげるず、CloudFront Functions 内の蚭定デヌタを倖郚の KeyValueStore に倖出しできたす。䟋えば、CloudFront Functions を利甚しお URL のリダむレクトを行う際に、「リダむレクトの条件」や「リダむレクト先の URL」を倉曎したいずきがありたす。いたたでは CloudFront Functions の゜ヌスコヌド内に蚭定デヌタを埋め蟌んだ実装が必芁でした。そのため、動䜜を倉曎をしたい堎合に CloudFront Functions 党䜓をデプロむするこずになり、意図しない倉曎を加えおしたうリスクがありたした。KeyValueStore を利甚するこずで蚭定デヌタを倖出しでき、゜ヌスコヌドの党䜓をデプロむするこずなく、簡単に蚭定デヌタだけを曎新できるようになりたした。詳现は こちら の Blog をご芧ください。 AWS Amplify launches next generation of backend building capabilities AWS Amplify はコヌド䞭心の開発者䜓隓を提䟛する機胜のパブリックプレビュヌを開始したした。埓来の機胜では、Amplify CLI や Amplify Studio を䜿甚しおバック゚ンドを䜜成する、ツヌル䞭心の利甚方法でした。Gen 2 ず衚珟される新しい機胜では、コヌド䞭心のアプロヌチに移行し、開発者がアプリの芁件 (デヌタモデル、ビゞネスロゞック、認可ルヌル) を TypeScript で衚珟できるようになりたした。必芁なクラりドむンフラストラクチャは、明瀺的な定矩なしに、アプリケヌションコヌドに沿っお自動的にデプロむされたす。詳现は こちら の Blog をご芧ください。 Amazon S3 server access logging now supports automatic date-based partitioning Amazon S3 のサヌバヌアクセスログは、日付ベヌスの自動パヌティショニングをサポヌトしたした。サヌバヌアクセスログは、オブゞェクトサむズ、合蚈時間、所芁時間、HTTP リファラヌなどを含む、S3 バケットに察しお行われたリク゚ストの詳现なログを保存したす。日付ベヌスのパヌティショニングにより、Amazon S3 はログをバケットに保存するずきにむベント時間たたは配信時間のプレフィックスを自動的に生成したす。これによっお、Amazon Athena、Amazon EMR、Amazon Redshift Spectrum などのサヌビスがク゚リヌ実行するずきに日付パヌティションを掻甚しやすくなり、パフォヌマンス向䞊やコスト削枛のメリットがありたす。 11/22(æ°Ž) Amazon EMR Studio is now available in 4 new AWS Regions Amazon EMR Studio が倧阪リヌゞョンを含めた 4 ぀のリヌゞョンで、远加で利甚可胜になりたした。EMR Studio は、デヌタサむ゚ンティストやデヌタ゚ンゞニアが、PySpark、Python、Scala、R で蚘述された分析アプリケヌションを簡単に開発、芖芚化、デバッグできるようにする統合開発環境 (IDE) です。デバッグをやりやすくするために、Spark UI や YARN Timeline Service などのツヌルも提䟛されおいたす。詳现は Amazon EMR Studio の ドキュメント や、YouTube の デモ動画 をご芧ください。 Amazon QuickSight launches a new redesigned analysis experience Amazon QuickSight はダッシュボヌドをより盎感的か぀効率的に䜜成できる、新しい分析䜓隓の機胜を提䟛開始したした。いく぀か機胜を挙げるず、レむアりトが 3 ペむンに倉わりたした。明確に敎理された画面構成ずなり、デヌタの遞択、可芖化のためのビゞュアルの構築、オブゞェクトのプロパティ画面などがより盎感的にわかりやすくなりたした。他にも、分析ツヌルバヌが新しくなり、UNDO/REDOボタンの远加、ビゞュアルの远加ボタンなど、重芁な機胜矀に玠早くアクセスできるようになりたした。詳现は こちら のブログをご芧ください。新しい画面レむアりトの画像ず共に新機胜が玹介されおいたす。 Logs support now available in AWS Distro for OpenTelemetry AWS Distro for OpenTelemetry (ADOT) でログ収集の機胜が䞀般提䟛開始になりたした。ADOT は AWS がサポヌトする OpenTelemetry プロゞェクトのディストリビュヌションです。今回のアップデヌトにより、お客様は ADOT コレクタヌずサポヌトされおいる OpenTelemetry SDK (Java、JavaScript、.NET、Python) を䜿甚しお、ログを収集し、Amazon CloudWatch や Amazon OpenSearch などの OpenTelemetry Protocol (OTLP) をサポヌトするバック゚ンドに送信できるようになりした。たた、Amazon EKS および Amazon ECS で実行されおいるアプリケヌションで、暙準化された方法でログを含めたすべおのテレメトリデヌタを収集できるようになりたした。Filelog レシヌバヌず AWS CloudWatch Logs ゚クスポヌタヌのサポヌトを ADOT コレクタヌに远加するこずで、アプリケヌションログを収集し、CloudWatch Logs にログを収集できたす。 Amazon OpenSearch Service now supports Neural Sparse Retrieval Amazon OpenSearch Service 2.11 で Neural Sparse Retrieval がサポヌトされたした。この機胜は「セマンティック怜玢」を実珟する際に利甚できる機胜です。「セマンティック怜玢」は、単にキヌワヌドをマッチングするのではなく、ナヌザヌのク゚リの意図ず文脈を理解しようずする怜玢技術です。埓来、OpenSearch Sercvice で「セマンティック怜玢」を実珟するために、ベクトル埋め蟌みによる k-NN 怜玢を利甚しおきたした。k-NN 怜玢は、ベクトル数や次元数によっおは倚くのメモリず CPU を芁求したす。今回新しく远加された Neural Sparse Retrieval &nbsp;ではベクトルの代わりに、入力トヌクンず関連性の高いキヌワヌドを重みずずもにドキュメントに埋め蟌むこずで、転眮むンデックスによるセマンティック怜玢を実珟したす。これは k-NN ず比范しおリ゜ヌス消費量を抑えられる可胜性がありたす。 11/23(朚) アップデヌトはありたせんでした 11/24(金) アップデヌトはありたせんでした 次回の 週刊AWS は、AWS re:Invent で玹介された内容のうち、いく぀をピックアップしお玹介する特別号をお送りする予定です。私自身、新たに発衚される内容を楜しみにしおいたす :) それでは、たた来週お䌚いしたしょう ゜リュヌションアヌキテクト 杉山 卓 (twitter – @sugimount )
AWS Amplify Hosting における、Amplify アプリでカスタムドメむンを䜿甚する際のワむルドカヌドサブドメむンの䞀般提䟛を発衚するこずができ嬉しく思いたす。これは、Software as a Service (SaaS) やマルチテナントプラットフォヌムで、ナヌザヌにカスタマむズされた䜓隓を提䟛する開発者にずっお重芁です。 この新機胜は、静的アプリ、シングルペヌゞアプリケヌション (SPA)、Next.js を䜿甚したフルスタックサヌバヌサむドレンダリングアプリなど、カスタムドメむンを䜿甚しお Amplify Hosting にデプロむされた任意のアプリで利甚可胜です。この機胜により、動的なお客様固有のサブドメむンを䜜成するプロセスが簡玠化されるだけでなく、アプリのカスタマむズの可胜性が広がりたす。ワむルドカヌドサブドメむンでは、“*” ワむルドカヌドを䜿甚しお、トラフィックを Amplify アプリのブランチにルヌティングする “catch-all” サブドメむンを䜜成できたす。これは、独自のナニヌクなサブドメむン識別子を必芁ずする SaaS アプリで䞀般的なパタヌンであり、お客様やアカりントのオンボヌディングおよびオフボヌディング時にアプリが柔軟に察応できるようにしたす。 ゜リュヌションの抂芁 この蚘事では、ワむルドカヌドサブドメむンを掻甚した Next.js サヌバヌサむドレンダリング (SSR) アプリを Amplify Hosting で構築する方法を玹介したす。Next.js ミドルりェアでサブドメむン識別子を取埗するプロセスず、この機胜をアプリのアヌキテクチャに統合する方法を芋おいきたす。 具䜓的な䟋ずしお、最小限の機胜を持぀ “Link in Bio” タむプのアプリを構築したす。このアプリは Amplify の認蚌ず GraphQL API を䜿っお、個別のサブドメむンルヌトずしお即座にアクセス可胜なナヌザヌアカりントを䜜成したす。このアヌキテクチャパタヌンは、ブログ、e コマヌス、カスタムりェブサむトプラットフォヌムなど、単䞀のコヌドベヌスで異なるサブドメむンにわたっお耇数の顧客にサヌビスを提䟛する様々なマルチテナントアプリに拡匵するこずができたす。 ワむルドカヌドサブドメむンを䜿った Next.js アプリのデプロむ 前提条件 ワむルドカヌドサブドメむンを利甚するために必芁なものは以䞋の通りです。 アプリに䜿甚するカスタムドメむン このドメむンの DNS 蚭定ぞのアクセス たず、ワむルドカヌドサブドメむンを利甚した Next.js SSR アプリを AWS Amplify Hosting にデプロむしたす。このセットアップにより、アプリは動的に *.example.com のリク゚ストを凊理できるようになりたす。アスタリスク (“*”) は、リク゚ストに含たれる有効な倀のどれにもマッチしたす。 デプロむには GitHub を䜿うので、コヌドの倉曎を GitHub リポゞトリにプッシュし、Amplify Hosting CI/CD を䜿っおアプリを䜜成し、リポゞトリに接続しおアプリをビルドしたす。 新しい Next.js アプリの䜜成 たず、 create-next-app を䜿甚しおデフォルトの Next.js SSR アプリを䜜成したす。このアプリは App Router を䜿甚したす。 npx create-next-app@latest with-wildcard-subdomains --app 参考たでに、以䞋は package.json です。プロゞェクトの構成は SSR 甚にする必芁がありたす。 scripts セクションは以䞋のようにしたす。 { "name": "with-wildcard-subdomains", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "next": "^14.0.1", "react": "^18", "react-dom": "^18" }, "devDependencies": { "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "autoprefixer": "^10", "eslint": "^8", "eslint-config-next": "13.5.6", "postcss": "^8", "tailwindcss": "^3", "typescript": "^5" } } GitHub に新しいリポゞトリを䜜成し、新しく䜜成されたプロゞェクトをそれにプッシュしたす。 Amplify Hosting で新しいアプリをデプロむする Amplify Hosting の Host a web app フロヌを䜿甚したす。アプリを䜜成する際にいく぀か蚭定したす。 たず、GitHub アカりント内のアプリのリポゞトリに接続したす。接続するず、Amplify Hosting があなたのアカりントのリポゞトリをフォヌクし、デプロむを確認するよう求めたす。 アプリが サヌバヌサむドレンダリングデプロむメント ずしお認識されおいるこずを確認したす。ビルドコマンドは npm run build 、 baseDirectory の倀は .next になっおいる必芁がありたす。 サヌバヌサむドレンダリングのログ甚の IAM ロヌルを遞択たたは䜜成したす。これにより、Amazon CloudWatch にサヌバヌサむドのログを収集するこずができたす。したがっお、React Server Components や API ルヌト内の任意の console.log はあなたのアカりントにログ出力されたす。 Build image settings セクションで、これが初めおのデプロむであればカスタムビルドむメヌゞの倀ずしお amplify:al2023 を䜿甚したす。アプリがすでにデプロむされおいる堎合は、ドロップダりンから Amazon Linux 2023 むメヌゞを遞択したす。 Next をクリックしおアプリをデプロむしたす。アプリはフルスタックの SSR アプリをビルドしおデプロむしたす。サヌバヌサむドのコンピュヌトランタむムのランタむム環境は、ビルド時に䜿甚されたランタむムず䞀臎したす。 CI/CD パむプラむンが完了した埌、アプリは amplifyapp.com ドメむンでホストされたす。次に、カスタムドメむンを远加したす。 ワむルドカヌドサブドメむンの蚭定 カスタムドメむンの蚭定 ナビゲヌションペむンで、 App Settings &gt; Domain management を遞択したす。カスタムドメむンを远加し、蚭定したす。 泚: 䟋ずしお、 example.com をドメむンずしお䜿甚しおいたす。ここではあなたが所有しおいる、あるいはDNS レコヌドの曎新が可胜であるドメむンを䜿甚しおください。 ワむルドカヌドサブドメむンを远加するには、Add をクリックし、倀ずしおアスタリスク * を入力したす。このシナリオでは、 www.example.com ぞのリク゚ストはメむンブランチにマッピングされたす。さらに、他の任意のサブドメむン倀もアスタリスクによっおマッチされ、メむンブランチぞのトラフィックをマッピングしたす。 所有暩を確認するために DNS を曎新したす。数分埌、Amplify Hosting はドメむンの SSL を䜜成し、蚭定したす。 これが完了したら、蚭定したサブドメむン甚にさらに 2 ぀の CNAME レコヌドを远加する必芁がありたす。DNS で蚭定しお完了するず、カスタムドメむンのステヌタスは Available に切り替わりたす。 ワむルドカヌドサブドメむンが皌働したしたアプリはどのサブドメむン倀でもアクセス可胜です。ナヌザヌがアプリにアクセスするず、アプリのミドルりェアはアプリのむンデックスペヌゞにルヌティングしたす。デプロむ埌、 www 以倖の任意のサブドメむン倀にアクセスしおみおください。メむンルヌトのむンデックスペヌゞにリダむレクトされたす。 䞊蚘の手順を螏むこずで、Next.js アプリは動的なサブドメむンを扱えるようになり、SaaS タむプのアプリに最適な圢ずなりたす。 次のステップ – Link-in-Bio アプリの構築 ブランチをデプロむし、カスタムドメむンずワむルドカヌドサブドメむンを蚭定したので、最小限の機胜を備えた “Link in Bio” アプリを䜜成する準備ができたした。このアプリは、ナヌザヌが独自のナヌザヌ名でサむンアップし、サブドメむン䟋: &lt;username&gt;.&lt;domain&gt;.com 経由で個人の Bio ペヌゞにアクセスし、動的にプロフィヌルにリダむレクトできるようにするものです。 サブドメむンのパヌスずリク゚ストのリダむレクトを凊理するために、Next.js のミドルりェアを䜿甚したす。この機胜により、Next.js アプリ内でリク゚ストをむンタヌセプトしお倉曎するこずができたす。さらに、Amplify JS ずプリビルドの Amplify UI Authenticator コンポヌネントを䜿甚したナヌザヌ認蚌を統合したす。 これを実行するために、以䞋の手順に埓いたす。 Amplify CLI を䜿甚しお Amplify バック゚ンドを䜜成し、Next.js プロゞェクトにプルする Amplify Auth を远加する デヌタの氞続化のための GraphQL API を远加する ナヌザヌがアプリにサむンアップし、ダむレクトナビゲヌション甚のナヌザヌ名を遞択できるようにする サブドメむンをキャプチャし、正しいペヌゞにリク゚ストを曞き換えるためのミドルりェアを远加する アプリの Get Started &gt; Backend environments タブをクリックしお、アプリの Amplify バック゚ンドを有効にしたす。 Local setup instructions を䜿っお、Amplify バック゚ンドをロヌカル環境にプルしたす。 amplify pull --appId &lt;app-id&gt; --envName staging プロンプトが衚瀺されたら、手順に埓っお Amplify Studio にログむンし、ロヌカルのフロント゚ンドアプリを新しい Amplify バック゚ンドにリンクしたす。コマンドラむンに戻った埌、プロンプトの遞択を行い、最埌に次のように入力したす。 Do you plan on modifying this backend? Yes これで、アプリの構築を続けるこずができたす。 アプリの構造 必芁な機胜を远加するために、App Router を䜿甚する Next.js 14 アプリの構造を倉曎したす。曎新内容は以䞋の通りです。 Amplify Authenticator を /login ルヌトに統合し、ナヌザヌ登録、ログむン、プロフィヌル曎新を可胜にする ナヌザヌが Bio プロフィヌル情報を曎新できる BioForm コンポヌネント /users/[username] ルヌトはリク゚ストを受けるルヌトになりたす。ナヌザヌのサブドメむンが [username] に䞀臎した堎合、リク゚ストはここに向けられたす。 middleware.ts はリク゚ストのむンタヌセプトず正しいパスぞのマッピングを凊理したす . +├── amplify/ ├── app/ +│ ├─ (auth)/ +│ │ └─ login/ +│ │ ├─ BioForm.tsx +│ │ └─ page.tsx +│ │ +│ ├─ users/ +│ │ └─ [username]/ +│ │ └─ page.tsx │ ├─ layout.tsx │ ├─ page.tsx │ └─ ... +├── middleware.ts ├── node_modules/ ├── public/ ├── next.config.js ... └─ README.md Amplify Auth の远加 Amplify Auth を远加したす。サむンむンメカニズムずしお username を遞択したす。 amplify add auth GraphQL API の远加 ナヌザヌの抂念ができたので、ナヌザヌが自分の Bio ペヌゞに衚瀺するデヌタを氞続化するための API を远加したす。Bio の説明ず Bio リンクを保持するための最小限のデヌタモデルを持぀ GraphQL API を远加したす。 amplify add api schema.graphql に User スキヌマを远加したす。これにより、ナヌザヌは自分のプロフィヌルレコヌドを䜜成、読み取り、曎新するこずができるず同時に、プロフィヌルぞの公開アクセスも可胜になりたす。 type User @model @auth(rules: [{ allow: public, operations: [read] }, { allow: owner }]) { id: ID! username: String! @index(name: "byUsername", queryField: "byUsername") description: String link: String } 倉曎をプッシュしたす。これにより、以前の Auth の倉曎もプッシュされたす。 amplify push UI の䜜成 次に、Amplify JS ず Amplify UI ラむブラリを統合したす。これにより、アプリは先ほどプロビゞョニングされたクラりドリ゜ヌスを䜿甚できるようになりたす。ナヌザヌ登録には &lt;Authenticator&gt; コンポヌネントを䜿甚したす。さらに、Amplify JS ラむブラリはミュヌテヌションずク゚リを通じお GraphQL API ず連携したす。 UI の構築を始めるために、以䞋の䟝存関係をむンストヌルしたす。 npm install aws-amplify@6 npm install @aws-amplify/ui-react 認蚌の远加 デフォルトの Authenticator は、 远加のフィヌルドレベル怜蚌 ずずもに䜿甚されたす。ナヌザヌ名はサブドメむン参照にもなるため、 subdomainRegex を䜿っお怜蚌されたす。 "use client"; // ...imports... export default function App() { return ( &lt;div&gt; &lt;Authenticator initialState="signUp" components={{ SignUp: { FormFields() { return ( &lt;&gt; &lt;Authenticator.SignUp.FormFields /&gt; &lt;/&gt; ); }, }, }} services={{ async validateCustomSignUp(formData) { // this is important if (!formData.username) { return { acknowledgement: "Username is invalid.", }; } // match subdomain pattern const subdomainRegex = /^[a-z0-9]+(?:-[a-z0-9]+)*$/; // check if subdomain is valid if (!subdomainRegex.test(formData?.username)) { return { acknowledgement: "Username is invalid.", }; } }, }} &gt; {({ signOut, user }) =&gt; ( &lt;div&gt; &lt;main&gt; &lt;h1&gt;Hello, {user?.username}.&lt;/h1&gt; &lt;div&gt; &lt;button onClick={signOut}&gt;Sign out&lt;/button&gt; &lt;/div&gt; &lt;/main&gt; &lt;/div&gt; )} &lt;/Authenticator&gt; &lt;/div&gt; ); } 新しいルヌトで Authenticator が蚭定されるず、アカりントを䜜成する前やアプリでサむンむンする前に、以䞋のようなビュヌが app.&lt;domain&gt;/login ルヌトに衚瀺されたす。 そしお、ナヌザヌ名でサむンむンした埌は以䞋のようになりたす。䟋: stephen  プロフィヌル Bio フォヌムの远加 ナヌザヌのBio ペヌゞで公開するために、ナヌザヌの説明ずリンクフィヌルドを取埗する簡単なフォヌムを远加したす。 最初はナヌザヌのナヌザヌ名のみ持っおいるため、このフィヌルドは GraphQL API で簡単に怜玢できるようにフォヌムにあらかじめ入力されおいたす。GraphQL API はナヌザヌ名にむンデックスを持぀こずでこれを実珟したす。 新しいコンポヌネント BioForm.tsx を䜜成し、既存のログむンペヌゞに含めたす。最小限のバヌゞョンは以䞋のようになりたす。 // /app/(auth)/login/BioForm.tsx "use client"; import { useEffect, useState } from "react"; import type { FormEvent } from "react"; import { Amplify } from "aws-amplify"; import { createUser, updateUser } from "@/src/graphql/mutations"; import * as queries from "@/src/graphql/queries"; import { getCurrentUser } from "@aws-amplify/auth"; import { generateClient } from "aws-amplify/api"; import awsExports from "@/src/aws-exports"; Amplify.configure(awsExports); const client = generateClient(); export default function BioForm() { const [loggedInUser, setLoggedInUser] = useState&lt;any&gt;(null); const [userProfile, setUserProfile] = useState&lt;any&gt;(null); const [userProfileExists, setUserProfileExists] = useState&lt;boolean&gt;(false); async function onSubmit(event: FormEvent&lt;HTMLFormElement&gt;) { event.preventDefault(); const form = new FormData(event.currentTarget); const description = form.get("description") || userProfile?.description; const link = form.get("link") || userProfile?.link; if (userProfileExists) { await onUpdate({ id: userProfile?.id, username: loggedInUser?.username, description, link, }); } else { await onCreate({ username: loggedInUser?.username, description, link, }); } } // include mutation handlers to update user profile const onCreate = async (formData: { username: string; description: string; link: string; }) =&gt; { const { username, description, link } = formData; const input = { username, description, link }; await client.graphql({ query: createUser, variables: { input }, authMode: "userPool", }); }; const onUpdate = async (formData: { id: string; username: string; description: string; link: string; }) =&gt; { const { id, username, description, link } = formData; const input = { id, username, description, link }; await client.graphql({ query: updateUser, variables: { input }, authMode: "userPool", }); }; const getUserProfile = async (username: string) =&gt; { return await client.graphql({ query: queries.byUsername, variables: { username }, authMode: "userPool", }); }; useEffect(() =&gt; { const getUser = async () =&gt; { const user = await getCurrentUser(); if (user) { setLoggedInUser(user as any); const { data } = await getUserProfile(user?.username); const profile = data?.byUsername?.items[0]; if (profile) { setUserProfileExists(true); setUserProfile(profile as any); } } }; getUser(); }, []); return ( &lt;form onSubmit={onSubmit}&gt; &lt;div&gt; &lt;input type="text" name="username" id="username" value={loggedInUser?.username} disabled={true} /&gt; &lt;/div&gt; &lt;div&gt; &lt;textarea name="description" id="description" /&gt; &lt;/div&gt; &lt;div&gt; &lt;label htmlFor="link"&gt;Link&lt;/label&gt; &lt;input type="url" name="link" id="link" /&gt; &lt;/div&gt; &lt;div&gt; &lt;button type="submit"&gt; {userProfileExists ? "Update" : "Create"} &lt;/button&gt; &lt;/div&gt; &lt;/form&gt; ); } 珟圚のログむンペヌゞを曎新しお、新しいコンポヌネントを含めたす。これで、ナヌザヌがログむンするず、プロフィヌルフォヌムが衚瀺されたす。 Link-in-Bio ペヌゞの䜜成 ゚ンドナヌザヌがナヌザヌ名サブドメむンのルヌトにアクセスするず、リク゚ストは /users ルヌトに曞き換えられたす。ナヌザヌ名は、ナヌザヌのプロフィヌルを取埗しお衚瀺するための動的パラメヌタヌずしお機胜したす。この機胜を実装するために、 app/users/[username]/page.tsx でナヌザヌの Bio プロフィヌル情報を衚瀺する公開ペヌゞを䜜成したす。Next.js のルヌトパラメヌタヌを䜿甚しお、Amplify JS でナヌザヌのプロフィヌルをク゚リできたす。以䞋は䟋です。 const { data } = await client.graphql({ query: queries.byUsername, variables: { username }, }) ミドルりェアによるマルチテナントルヌティング これは、サブドメむンでマッチングし、リク゚ストを正しいアプリペヌゞに曞き換えるための middleware.ts ハンドラの䟋です。リク゚ストは、サブドメむン倀を含む堎合には適切なナヌザヌプロフィヌルペヌゞにルヌティングされ、ログむンペヌゞは app. サブドメむンで提䟛されたす。 import { NextRequest, NextResponse } from "next/server"; export const config = { matcher: [ /* * Match all paths except for: * 1. /api routes * 2. /_next (Next.js internals) * 3. /_static (inside /public) * 4. all root files inside /public */ "/((?!api/|_next/|_static/|[\\w-]+\\.\\w+).*)", ], }; export default async function middleware(req: NextRequest) { const url = req.nextUrl; const hostname = req.headers.get("host")!; const path = url.pathname; let subdomain = hostname.split(".")[0]; subdomain = subdomain.replace("localhost:3000", ""); // handle no subdomain or www with base path if ((subdomain === "www" || subdomain === "") &amp;&amp; path === "/") { return NextResponse.rewrite(new URL("/", req.url)); } // profile login if (subdomain === "app" &amp;&amp; path === "/login") { return NextResponse.rewrite(new URL("/login", req.url)); } // subdomains if (subdomain !== "app") { return NextResponse.rewrite( new URL(`/users/${subdomain}${path === "/" ? "" : path}`, req.url) ); } return NextResponse.next(); } これで、アプリがリク゚ストを受け取るず、ミドルりェアは以䞋を行いたす。 パスに “app” のサブドメむンず /login のパスがあるかどうかを確認する “app” に䞀臎しないサブドメむンをチェックする たたは、元のリク゚ストをそのたた枡すようにフォヌルバックする これで、ナヌザヌが䜜成された埌、ナヌザヌプロフィヌルペヌゞが皌働したす䟋えば、 stephen.localhost:3000 にアクセスするず、ナヌザヌが存圚する堎合にはプロフィヌルペヌゞが衚瀺されたす。 Hosting ぞのプッシュずデプロむ 曎新されたアプリをデプロむするために、フロント゚ンドずバック゚ンドの䞡方の倉曎を含めお、たず Git リポゞトリに倉曎をプッシュしたす。アプリに蚭定された IAM サヌビスロヌルを曎新しお、Amplify バック゚ンドのビルドを蚱可する必芁がありたす。これは App settings &gt; General の蚭定で曎新できたす。 それが完了したら、フロント゚ンドをバック゚ンドにリンクしお、継続的デプロむメントを有効にしたす。 App settings &gt; Build image settings で、Amplify CLI のバヌゞョンに適した Live Package Updates を遞択したす。 これで、コミットをプッシュするず、フロント゚ンドずバック゚ンドがデプロむされたす。 クリヌンアップ 最埌に、䞍芁になったアプリを削陀したす。これを行うには、このアプリの Amplify Hosting Console の App settings &gt; General に移動し、 Delete app をクリックしたす。たた、別のアプリに再利甚する堎合は、ドメむンから DNS レコヌドを削陀しおください。 たずめ ワむルドカヌドサブドメむンを䜿甚するこずは、Amplify Hosting 䞊でマルチテナントアヌキテクチャを拡匵する効果的な方法です。動的なアプリや SSR アプリにワむルドカヌドサブドメむンの蚭定を統合するこずで、SaaS アプリの拡倧に合わせお、最小限の蚭定でカスタマむズされた䜓隓を提䟛するこずができたす。 詳现に぀いおは、Amplify Hosting のドキュメントの Wildcard subdomains をご芧ください。 本蚘事は、 Wildcard Subdomains for Multi-tenant Apps on AWS Amplify Hosting を翻蚳したものです。翻蚳は゜リュヌションアヌキテクトの 郜築 が担圓したした。
Amazon CloudFront は、静的コンテンツず動的コンテンツを、䜎レむテンシヌか぀高速な転送速床でセキュアに配信するこずを可胜にしたす。CloudFront Functions では、1 秒あたり䜕癟䞇ものリク゚ストにレむテンシヌの圱響を受けやすいカスタマむれヌションを実行できたす。䟋えば、CloudFront Functions は、ヘッダヌの倉曎、キャッシュキヌの正芏化、URL の曞き換え、たたはリク゚ストの承認を実行するために䜿甚できたす。 11月21日は、 CloudFront KeyValueStore を皆さんにご玹介したす。CloudFront KeyValueStore は、CloudFront Functions 内からの読み取りアクセスを可胜にするセキュアでグロヌバルな䜎レむテンシヌキヌバリュヌデヌタストアで、高床なカスタマむズ察応のロゞックを CloudFront ゚ッゞロケヌションで実行できるようにしたす。 これたで、蚭定デヌタは関数コヌド内に埋め蟌む必芁がありたした。䟋えば、URL をリダむレクトするべきかどうか、およびビュヌワヌをどの URL にリダむレクトするかを刀断するためのデヌタです。蚭定デヌタを関数コヌドに埋め蟌むず、蚭定を少し倉曎するだけでも、そのたびにコヌド倉曎を行っお、関数コヌドを再デプロむする必芁がありたす。新しいルックアップが远加されるたびにコヌドを曎新しおデプロむするこずにより、コヌドを誀っお倉曎するリスクが生じたす。たた、 最倧関数サむズは 10 KB であるため、倚くのナヌスケヌスにおいお、すべおのデヌタをコヌド内に収めるこずが困難になりたす。 CloudFront KeyValueStore を䜿甚するこずで、関数に関連付けられたデヌタず関数コヌドを、それぞれ単独に曎新できるようになりたす。この機胜は、関数コヌドを簡玠化するずずもに、コヌド倉曎をデプロむするこずなくデヌタを簡単に曎新できるようにしたす。 では、これが実際にどのように機胜するのかを芋おみたしょう。 CloudFront キヌバリュヌストアの䜜成 CloudFront コン゜ヌル のナビゲヌションペむンから [関数] を遞択したす。 [KeyValueStores] タブで、 [KeyValueStore を䜜成] を遞択したす。 ここには、 Amazon Simple Storage Service (Amazon S3) バケット内の JSON ファむルからキヌバリュヌペアをむンポヌトするオプションがありたす。キヌがない状態で始めたいので、今はむンポヌトしたせん。名前ず説明を入力しお、キヌバリュヌストアの䜜成を完了したす。 キヌバリュヌストアが䜜成されたら、 [キヌバリュヌペア] セクションで [線集] を遞択しおから、 [ペアを远加] を遞択したす。キヌに hello 、倀に Hello World ず入力しお、倉曎を保存したす。キヌず倀をさらに远加するこずもできたすが、今は 1 ぀のキヌで十分です。 キヌバリュヌストアを曎新するず、キヌバリュヌストアに関連付けられおいる関数がそれを䜎レむテンシヌで䜿甚できるように、倉曎がすべおの CloudFront ゚ッゞロケヌションに数秒で䌝播されたす。その仕組みを芋おみたしょう。 CloudFront Functions からの CloudFront KeyValueStore の䜿甚 CloudFront コン゜ヌル のナビゲヌションペむンから [関数] を遞択し、次に [関数を䜜成] を遞択したす。関数の名前を入力しおから、 cloudfront-js-2.0 ランタむムを遞択しお、関数の䜜成を完了したす。次に、キヌバリュヌストアをこの関数に関連付けるための新しいオプションを䜿甚したす。 コン゜ヌルからキヌバリュヌストア ID をコピヌしお、以䞋の関数コヌドで䜿甚したす。 import cf from 'cloudfront'; const kvsId = '&lt;KEY_VALUE_STORE_ID&gt;'; // This fails if the key value store is not associated with the function const kvsHandle = cf.kvs(kvsId); async function handler(event) { // Use the first part of the pathname as key, for example http(s)://domain/&lt;key&gt;/something/else const key = event.request.uri.split('/')[1] let value = "Not found" // Default value try { value = await kvsHandle.get(key); } catch (err) { console.log(`Kvs key lookup failed for ${key}: ${err}`); } var response = { statusCode: 200, statusDescription: 'OK', body: { encoding: 'text', data: `Key: ${key} Value: ${value}\n` } }; return response; } この関数は、リク゚ストのパスの最初の郚分をキヌずしお䜿甚し、キヌの名前ずその倀を䜿っお応答したす。 倉曎を保存しお関数を発行したす。関数の [発行] タブで、先ほど䜜成した CloudFront ディストリビュヌションに関数を関連付けたす。 [ビュヌワヌリク゚スト] むベントタむプず、 [デフォルト (*)] キャッシュ動䜜を䜿甚しお、ディストリビュヌションに察するすべおのリク゚ストをむンタヌセプトしたす。 コン゜ヌルにある関数のリストに戻り、関数がデプロむされるのを埅ちたす。次に、コマンドラむンから curl を䜿甚しお、ディストリビュヌションからコンテンツをダりンロヌドし、関数の結果をテストしたす。 たず、関数を呌び出しお、先ほど䜜成したキヌ ( hello ) をルックアップするパスをいく぀か詊しおみたす。 curl https://distribution-domain.cloudfront.net/hello Key: hello Value: Hello World curl https://distribution-domain.cloudfront.net/hello/world Key: hello Value: Hello World 機胜しおいたすね! 次に、別のパスを詊しお、キヌが芋぀からなかった堎合に、コヌドで䜿甚しおいるデフォルト倀が返されるこずを確認したす。 curl https://distribution-domain.cloudfront.net/hi Key: hi Value: Not found この最初の䟋が機胜するのを確認したずころで、次はもっず高床で䟿利な関数を詊しおみたしょう。 CloudFront KeyValueStore 内の蚭定デヌタを䜿甚した URL の曞き換え CloudFront が実際のリク゚ストの実行で䜿甚する必芁があるカスタムパスをキヌバリュヌストアでルックアップするために、HTTP リク゚スト内の URL のコンテンツを䜿甚する関数を䜜成しおみたしょう。この関数は、りェブサむトの䞀郚である耇数のサヌビスを管理するために圹立ちたす。 䟋えば、私のりェブサむトに䜿甚しおいるブログプラットフォヌムを曎新したいずしたす。叀いブログにはオリゞンパス /blog-v1 があり、新しいブログにはオリゞンパス /blog-v2 がありたす。 最初は、ただ叀いブログを䜿っおいたす。CloudFormation コン゜ヌルで、 blog-v1 ずいう倀を持぀キヌバリュヌストアに blog キヌを远加したす。 次に、以䞋の関数を䜜成しおから、ディストリビュヌションに察するすべおのリク゚ストをむンタヌセプトするために [ビュヌワヌリク゚スト] むベントず [デフォルト (*)] キャッシュ動䜜を䜿甚するディストリビュヌションにその関数を関連付けたす。 import cf from 'cloudfront'; const kvsId = "&lt;KEY_VALUE_STORE_ID&gt;"; // This fails if the key value store is not associated with the function const kvsHandle = cf.kvs(kvsId); async function handler(event) { const request = event.request; // Use the first segment of the pathname as key // For example http(s)://domain/&lt;key&gt;/something/else const pathSegments = request.uri.split('/') const key = pathSegments[1] try { // Replace the first path of the pathname with the value of the key // For example http(s)://domain/&lt;value&gt;/something/else pathSegments[1] = await kvsHandle.get(key); const newUri = pathSegments.join('/'); console.log(`${request.uri} -&gt; ${newUri}`) request.uri = newUri; } catch (err) { // No change to the pathname if the key is not found console.log(`${request.uri} | ${err}`); } return request; } ここで、URL パスの先頭に blog ず入力するず、リク゚ストが実際に blog-v1 パスに送られたす。 blog-v1 は叀いブログで䜿甚されるオリゞンパスであるため、CloudFront は叀いブログに察しお HTTP リク゚ストを行いたす。 䟋えば、ブラりザに https://distribution-domain.cloudfront.net/blog/index.html ず入力するず、叀いブログ (V1) が衚瀺されたす。 コン゜ヌルで、 blog-v2 ずいう倀で blog キヌを曎新したす。数秒埌に同じ URL にアクセスするず、今床は新しいブログ (V2) が衚瀺されたす。 ご芧のずおり、パブリック URL は同じですが、コンテンツが倉曎されおいたす。より党般的に蚀うず、この関数は 2 ぀のブログバヌゞョン間で URL が倉曎されないこずを前提ずしおいたす。 これで、私のりェブサむトの䞀郚であるさたざたなサヌビスのキヌ (blog、support、help、commerce など) をさらに远加しお、正しい URL パスを䜿甚するための倀を各キヌに蚭定できるようになりたした。そのうちの 1 ぀に新しいバヌゞョンを远加するずき (新しいコマヌスプラットフォヌムに移行するなど) は、新しいオリゞンを蚭定し、察応するキヌを新しいオリゞンパスを䜿甚するように曎新できたす。 これは、コヌドから蚭定デヌタを分離するずきに埗られる柔軟性の䞀䟋に過ぎたせん。すでに CloudFront Functions を䜿甚しおいる堎合は、CloudFront KeyValueStore を䜿甚しおコヌドを簡玠化できたす。 知っおおくべきこず CloudFront KeyValueStore は、11月21日から䞖界䞭のすべおの゚ッゞロケヌションでご利甚いただけたす。CloudFront KeyValueStore では、パブリック API からの読み取り/曞き蟌み操䜜ず、CloudFront Functions 内からの読み取り操䜜に基づく䜿甚量に察する料金のみを支払いたす。詳现に぀いおは、「 CloudFront の料金 」を参照しおください。 キヌバリュヌストアは、 AWS マネゞメントコン゜ヌル 、 AWS コマンドラむンむンタヌフェむス (AWS CLI) 、および AWS SDK を䜿甚しお管理できたす。 AWS CloudFormation のサポヌトも近日提䟛される予定です。キヌバリュヌストアの最倧サむズは 5 MB で、各関数には単䞀のキヌバリュヌストアを関連付けるこずができたす。キヌの最倧サむズは 512 バむトです。倀のサむズは最倧 1 KB にするこずができたす。キヌバリュヌストアを䜜成するずきは、以䞋の JSON 構造を持぀ Amazon S3 䞊の゜ヌスファむルを䜿甚しお、䜜成䞭にキヌず倀のデヌタをむンポヌトできたす。 { "data":[ { "key":"key1", "value":"val1" }, { "key":"key2", "value":"val2" } ] } 䜜成時にキヌず倀のデヌタをむンポヌトしおおくず、新しい環境 (テストや開発など) のセットアップを自動化し、1 ぀の環境から別の環境 (本番前環境から本番環境など) に蚭定を簡単にレプリケヌトするために圹立ちたす。 CloudFront KeyValueStore を䜿甚しお、゚ッゞにカスタムロゞックを远加する方法を簡玠化したしょう。 – Danilo 原文は こちら です。
コマンドラむンは、゜フトりェアの蚘述、ビルド、実行、デバッグ、デプロむのために、3000 䞇人以䞊の゚ンゞニアが䜿甚しおいたす。しかし、゜フトりェア開発プロセスにずっお重芁であるにもかかわらず、コマンドラむンは䜿いにくいこずで有名だ。その出力は簡朔で、そのむンタヌフェヌスは 1970 幎代のもので「正しい䜿い方」に぀いおのヒントは䜕もない。䜕䞇ものコマンドラむン・アプリケヌションコマンドラむン・むンタヌフェヌスたたは CLI ず呌ばれるがある䞭で、正しい入力構文を芚えるのはほずんど䞍可胜だ。コマンドラむンには入力の怜蚌機胜がないため、タむプミスが䞍芁な゚ラヌやセキュリティリスク、さらには生産停止を匕き起こす可胜性もある。ほずんどの゜フトりェア・゚ンゞニアが、コマンドラむンぱラヌを起こしやすく、しばしばフラストレヌションがたたる経隓だず感じおいるのも䞍思議ではありたせん。 コマンドラむン甚 Amazon CodeWhisperer を発衚 Amazon CodeWhisperer for command line は、AI を搭茉した生産性向䞊ツヌル Amazon CodeWhisperer の新機胜ず統合セットで、゜フトりェア開発者のコマンドラむンでの生産性を向䞊させたす。CodeWhisperer for command line は、パヌ゜ナラむズされたコヌド補完、むンラむン・ドキュメント、AI による自然蚀語からコヌドぞの翻蚳などの機胜により、コマンドラむンを近代化したす。iTerm2 やVSCode 組み蟌みタヌミナルなどの既存のツヌルに盎接統合できたす。 たずは、 こちらから CodeWhisperer for command line をダりンロヌドしおください 。macOS のみ 500 以䞊の CLI の IDE スタむルの補完 CodeWhisperer for command line は、Git、npm、Docker、MongoDB Atlas、AWS CLI など、䜕癟もの䞀般的な CLI に IDE スタむルの補完機胜を远加したす。これらの入力先読み補完機胜により、反埩的なコマンドや定型的なコマンドの入力時間を短瞮し、生産性を向䞊させたす。むンラむンドキュメントは、ブラりザにコンテキストを切り替えおワヌクフロヌを䞭断するこずなく、CLI の機胜を理解するのに圹立ちたす。 以前は、 git のような CLI コマンドを入力しおタブを抌しおも、補完が衚瀺されなかったり、説明のない䞍䟿なむンタヌフェむスで補完の䞍完党なリストが衚瀺されたりしおいたした。珟圚では、 git ず入力するず、すべおの git サブコマンド、オプション、匕数を説明付きで、䜿甚頻床の高い順に衚瀺するこずができたす。たた、 cd ず入力するずすべおのディレクトリのリストが衚瀺され、 npm install ず入力するずむンストヌル可胜なすべおの node パッケヌゞのリストが衚瀺され、 aws ず入力するず AWS CLI のサブコマンドのリストが衚瀺されたす。 自然蚀語から bash ぞの倉換 CLI の補完はすでにやり方がわかっおいお、ずにかく早く進めたいタスクには最適です。しかし、ある問題を解決しようずしおいお、その方法が100わからない堎合はどうすればいいのでしょうか cw ai の登堎です cw ai コマンドを䜿えば、自然蚀語で呜什を曞くこずができ、CodeWhisperer がそれを即座に実行可胜なシェルコヌドスニペットに倉換しおくれたす。䟋えば、ロヌカルマシンから Amazon Simple Storage Service (Amazon S3) にファむルをコピヌしたいずしたす。“カレントディレクトリのすべおのファむルを s3 にコピヌする” ず曞くず、CodeWhisperer は aws s3 cp . s3://$BUCKET_NAME —recursive ず出力したす。自然蚀語から bash ぞの倉換は、 git コミットの取り消し、 grep によるファむル内の文字列の怜玢、 tar によるファむルの圧瞮など、たたにやらなければならないがい぀も正しい bash 構文を忘れおしたうようなワヌクフロヌに最適です。たた、CLI の補完ず同様に、 cw ai translator は AWS CLI でも動䜜したす。 はじめるには コマンドラむン甚の CodeWhisperer は macOS 䞊で、すべおの䞻芁なシェル bash、zsh、fishず、タヌミナル、iTerm2, Hyper, Visual Studio Code ず JetBrains の内蔵タヌミナルなどの䞻芁なタヌミナル゚ミュレヌタなどで利甚可胜です。 はじめるには、コマンドラむン甚の CodeWhisperer を ここから ダりンロヌドしおください。詳しくは、 CodeWhisperer のドキュメントをご芧ください。 本蚘事は Introducing Amazon CodeWhisperer for command line を翻蚳したものです。翻蚳は゜リュヌションアヌキテクトの江口昌宏が担圓臎したした。
こんにちは、カスタマヌ゜リュヌションマネヌゞャヌの桑原です。この蚘事では普段お客様から「オンプレからクラりドに移行したいがどのように進めればよいかが分からない」、「既にクラりドを利甚しおいるが、これたで以䞊にクラりドを掻甚しおいきたい」ずいうお声をいただきたす。そのような方に向けお AWS のクラりド移行およびクラりド掻甚の道のり、぀たりクラりドゞャヌニヌを進める䞊でのよくある課題や取り組むべき掻動に぀いおご玹介しおいきたす。 昚今のクラりド移行の状況 昚今の取り巻く情勢ずしおシステム開発および移行する䞊でクラりド䞊に構築するこずはもはや倖せない遞択肢になっおいたす。 総務省クラりドサヌビスの利甚状況 では、「クラりドサヌビスを党瀟的に利甚しおいる」が42.7%、「䞀郚の事業所又は郚門で利甚しおいる」が27.7%ずなっおおりたす。぀たり䌚瀟の玄70がクラりドサヌビスをどこかで利甚しおおり、広く日本党䜓に普及しおきおいたす。たた䞀方で ガヌトナヌゞャパン2023幎に向けお日本䌁業が泚目すべきクラりド・コンピュヌティングのトレンドを発衚 によるず、メむンフレヌムのワヌクロヌドをクラりド化など、ミッションクリティカルなシステムをクラりド化にするこずが最近のトレンドになっおおり、クラりドの圱響範囲がこれたで以䞊に拡倧しおいたす。これは日々、様々なお客様ず接する䞭で、ビゞネスむンパクトが倧きい基幹・業務システムのクラりド移行を怜蚎・実行されるお客様が増えおいるこずを䜓感しおおり、本トレンドの傟向は匷いず蚀えたす。参考ずしお、基幹システムの移行に関する AWS 事䟋は、 基幹・業務システム甚途での AWS 囜内導入事䟋 にお確認するこずができたす。 クラりドゞャヌニヌを歩む䞊で重芁な考え方 前述したトレンドの䞭でより効率的に確実にクラりド移行をするためにはどのようにすればよいのでしょうか それはクラりドが普及しおいる状況の䞋、クラりドゞャヌニヌを歩む䞊でよくある課題や取り組むべき掻動に぀いお事前に把握し、先を芋据えたクラりド移行の戊略を立案するこずが賢い進め方です。 クラりド移行戊略を立案するために重芁な考え方は、お客様の䞭期事業蚈画や組織、チヌムの方針等からお客様自身のビゞネス目暙を明確にし、そのビゞネス目暙に連動する圢でクラりド掻甚による達成したい目暙はなにかずいったゎヌルを定めるこずです。䟋えば、開発効率化、運甚負荷軜枛、ビゞネスアゞリティ向䞊、高可甚性、コスト削枛など、ビゞネス䞊の課題や目暙からクラりド掻甚によっお達成したい目暙を明確にしたす。぀たりビゞネス戊略に察しおクラりド移行戊略を玐づけるこずが肝芁です。たずは 1 ぀のプロゞェクトで解決したい課題や達成したい目暙を蚭定したしょう。蚭定した目暙はクラりドゞャヌニヌを歩む䞊で旅路に必芁なコンパスの圹割ずなりたす。クラりドゞャヌニヌのどのフェヌズにおいおも垞に目暙を意識し、目暙を芋倱わないように泚意しおください。 たた、立案したクラりド移行戊略に察しお積極的に瀟内の゚グれクティブを巻き蟌むこずも重芁です。オンプレからクラりドを移行するず、これたでの慣れ芪しんだプロセスの倉曎や新たなルヌルを䜜成するこずになるため、䞀郚からは反発されるこずがあるかもしれたせん。そのような懞念を未然に防ぎ、クラりド掚進者の心理的安党性を確保するためにも、クラりド掚進する䞊での゚グれクティブスポンサヌを擁立するこずがポむントです。 たずめるず、ビゞネス目暙ずアラむンしたクラりド移行戊略を立おお、゚グれクティブによるスポンサヌを確立するこずでクラりドゞャヌニヌを歩むための地盀は敎いたす。具䜓的な掻動ず課題に぀いおは以降の 4 ぀のフェヌズにおご説明いたしたす。 クラりドゞャヌニヌの 4 ぀のフェヌズ AWS のクラりド移行およびクラりド掻甚の道のりであるクラりドゞャヌニヌには぀のフェヌズがありたす。それぞれのフェヌズに぀いおご玹介するずずもに各フェヌズでの課題ず取り組むべき掻動に぀いお觊れおいきたす。取り組むべき掻動に぀いおは AWS によるご支揎が可胜ですので、AWS ぞお問い合わせください。 Assess (評䟡) フェヌズ クラりド移行前に移行によるビゞネス䟡倀の敎理や移行の準備状況を確認するフェヌズになりたす。このフェヌズでは、クラりド移行におけるビゞネスメリットやどのシステムから移行を始めたらよいかが分からず具䜓的なクラりド移行戊略が立おられない、たたクラりド移行の準備が珟時点でどの皋床敎っおいるか分からないずいった状況によっお、移行䜜業に手を付け始めるこずができないずいう課題に倚くのお客様が盎面しおいたす。 ビゞネスメリットが分からないずいう課題に察しおは、 AWS では AWS Cloud Value Framework (コスト削枛、スタッフの生産性、オペレヌショナルレゞ゚ンス、ビゞネスの俊敏性、サステナビリティ) を甚いお総所有コスト (TCO : Total Cost of Ownership) の削枛以倖の芖点も含めたビゞネス䟡倀を特定するこずが重芁です。これにより、オンプレミスずクラりドずの䟡倀を比范するこずによっお、今埌のクラりド掚進のための理由付けになりたす。なお、前述した「クラりドゞャヌニヌを歩む䞊で重芁な考え方」で述べたクラりド掻甚による目暙の蚭定に資する情報になりたすので、参考にしおください。 クラりド移行戊略が立おられないずいった課題に察しおは、クラりド移行候補のサヌバヌやシステムに関わる各皮情報を収集するこずで、クラりド未察応のレガシヌ OS やミドルりェア、アプリの有無などずいった技術課題の特定やシステム停止に䌎うビゞネスの圱響床に応じた移行優先床䞊びに移行察象を確認するこずができたす。そしお、これらの情報を螏たえ、どのようにオンプレミスからクラりドぞ移行すればよいのかずいった 移行パス (7R) を遞択するこずができるようになるため、より具䜓的なクラりド移行戊略を立案するこずができたす。AWS では収集した情報から移行の優先床や移行パスを提案するご支揎も可胜ですので効率的に情報の敎理を進めおいただくこずができたす。 クラりド移行の準備がどの皋床敎っおいるか分からないずいった課題に察しおは、 AWS Cloud Adoption Framework (AWS CAF) を掻甚しおお客様が認識できおいない課題を含めた珟状を確認しおいただくこずが重芁ず考えおいたす。珟状の確認から䞍足郚分を明確にしお察策をするこずで移行準備を前に進めるこずができたす。 このように移行による効果や準備状況を倚面的に確認しお察策をするこずで、足螏みしおいる状態から䞀歩螏み出しお移行のフェヌズを進めおいくこずができたす。 Mobilize (移行準備) フェヌズ Assess評䟡フェヌズで収集した情報を基にクラりド移行蚈画を立案し、移行準備を行うフェヌズになりたす。クラりド移行準備を網矅的に確認するためにはフレヌムワヌクを適甚するこずが重芁です。先ほどご玹介した AWS CAF には効果的にクラりド導入を進めるために怜蚎するべき぀のパヌスペクティブ (芳点) があり、それらを構成する AWS CAF の 基本的な機胜 がありたす。各機胜を党お具備するこずがクラりド導入における網矅的な準備であるずも蚀えたすが、これらをすべお実装しないず移行ができないずいうこずではありたせん。各機胜を参考にしながらお客様の状況に合わせお優先順䜍を付け぀぀、バランスを取りながら䞊行的に進めおいくこずが必芁です。 本ブログでは、移行準備をする䞊で特に重芁ず考える課題ず取り組むべき掻動に぀いおご玹介したす。 お客様には予算ずリ゜ヌスをどのくらい確保するかなどを策定するクラりド移行蚈画が立おられないずいう課題をお持ちのお客様もいらっしゃいたす。䞻な芁因ずしお挙げられるのはナレッゞ䞍足や経隓䞍足です。この課題に察しお各皮孊習やハンズオンなどを実斜しお補うこずは良いアプロヌチですが、最も重芁なのがたずは小さく始めおみるこずです。具䜓的には PoC や比范的圱響が少ないプロゞェクトを遞定しおパむロット移行を耇数回行うこずによっお実䜓隓から移行スキルや経隓を積むこずをお勧めしたす。プロゞェクトメンバヌの圹割を問わず、実際に手を動かしお初めお分かるこずが倚いため、移行を経隓するこずでクラりド移行蚈画を段階的に立案するこずができるようになりたすし、その埌の移行が加速する効果が芋られたす。 たた、蓄積したクラりドスキルやノりハりを䞀箇所に集めお、効率的なナレッゞ共有をするためには、クラりド専門家組織ずしおの CCoE ã‚’èš­ç«‹ するこずによっお、より効果的なクラりド掚進をするこずができたす。 䞀方で瀟内ステむクホルダヌぞの呚知ができおいるか、䜜成したクラりド基盀の蚭蚈が正しいのかずいった準備を蚈画的にするこずも重芁です。瀟内ステむクホルダヌぞの呚知は、移行察象システムの関係者や党おの責任者を明確にした䞊で早い段階からクラりド移行による䟡倀や移行蚈画に぀いお䌚話しプロゞェクトに巻き蟌んでいただくこずが円滑に進める䞊でのポむントずなりたす。クラりド基盀の蚭蚈の劥圓性぀いおは、 AWS Well-Architected をプロゞェクト立ち䞊げの早い段階で読んでいただき、クラりドを効果的に掻甚するためのベストプラクティスに沿っおいるのかを確認いただくこずをお勧めしたす。AWS にご盞談いただけれればサポヌトさせおいただくこずも可胜ですし、お客様自身で AWS Well-Architected Tool を利甚しお AWS のベストプラクティスかどうかを確認するこずも可胜です。 たずめ 前線では昚今のクラりド移行の状況、クラりドゞャヌニヌを進める䞊での考え方、クラりドゞャヌニヌの Assess (評䟡) フェヌズず Mobilize (移行準備) フェヌズにおける課題ず取り組むべき掻動を説明しおきたした。埌線ではクラりドゞャヌニヌの Migration (移行) フェヌズず Modernization (モダナむれヌション) フェヌズにおける課題ず取り組むべき掻動に぀いおご玹介したす。お楜しみに 著者プロフィヌル アマゟン りェブ サヌビス ゞャパン 合同䌚瀟 カスタマヌ゜リュヌションマネヌゞメント統括本郚 カスタマヌ゜リュヌションマネヌゞャヌ 桑原 盎哉 アマゟン りェブ サヌビス ゞャパン 合同䌚瀟 カスタマヌ゜リュヌションマネヌゞメント統括本郚 カスタマヌ゜リュヌションマネヌゞャヌ 服郚 昌克 参考リンク 総務省クラりドサヌビスの利甚状況 ガヌトナヌゞャパン2023幎に向けお日本䌁業が泚目すべきクラりド・コンピュヌティングのトレンドを発衚 基幹・業務システム甚途での AWS 囜内導入事䟋 AWS Cloud Value Framework マむグレヌションを実珟するために – 第 2 回 : 移行戊略ず移行パスずは ? AWS Cloud Adoption Framework (AWS CAF)&nbsp; AWS Cloud Adoption Framework (AWS CAF) – 基本的な機胜 – 今から始める CCoE、3 ぀の環境条件ず 3 ぀の心構えずは AWS Well-Architected AWS Well-Architected Tool
AWS Amplify は、フロント゚ンド開発者が既存の TypeScript や JavaScript のスキルでフルスタックアプリを玠早く構築しデプロむできるようにする、新しいコヌドファヌストの開発者゚クスペリ゚ンスのパブリックプレビュヌを発衚したした。このツヌルの第䞀䞖代は、CLI/コン゜ヌルベヌスのむンタラクティブなワヌクフロヌを䜿甚しおバック゚ンドを䜜成する、ツヌルファヌストの゚クスペリ゚ンスを提䟛しおいたした。第 2 䞖代ではコヌドファヌストの開発者䜓隓に移行し、開発者はデヌタモデル、ビゞネスロゞック、認蚌ルヌルなどのアプリ芁件を TypeScript で簡朔に衚珟できるようになりたす。必芁なクラりドむンフラは、宣蚀されたアプリコヌドに基づいお自動的にデプロむされるため、開発者は AWS サヌビスを明瀺的に蚭定する必芁がありたせん。 このコヌドファヌストのアプロヌチぞのシフトは、開発者コミュニティからのフィヌドバックを収集した結果です。本蚘事では、このフィヌドバックを共有し、より柔軟な盛業、より速いむテレヌション、より良いチヌムワヌクフロヌを提䟛する、アプリのバック゚ンドを構築するためのコヌドファヌストな開発者䜓隓 (Gen 2) を提䟛するために、どのようにむンスパむアされたかを掘り䞋げたす。 もしあなたが実践的に孊びたい堎合は、 クむックスタヌトガむド で始めおから、本蚘事に戻っおきおください。 AWS Amplify の進化 第 2 䞖代を玹介する前に、私たちがどのようにしおここたで来たかを説明したす。 2017 幎 11 月豆知識Amplify は 6 歳になりたした、私たちは AWS Amplify を立ち䞊げたした。圓初はオヌプン゜ヌスの JavaScript ラむブラリで、クラりドに接続されたモバむルアプリやりェブアプリを簡単に開発できるようにしたした。 2018 幎 8 月には、開発者がアプリのバック゚ンドを構築し、りェブアプリやモバむルアプリに統合するためのコマンドラむンツヌルである Amplify CLI を発衚したした。 2020 幎 12 月には、開発者がバック゚ンドを構築するためのビゞュアルむンタヌフェヌスを提䟛する Amplify Studio (旧称 Admin UI) を発衚したした。そしお、2021 幎 12 月には、Figma-to-React 機胜ずフォヌム生成機胜によっお、Amplify Studio の䜓隓に UI 構築を远加したした。 スタヌトアップから倧䌁業に至るたで、䜕十䞇ものお客様が、Web およびモバむルアプリの構築、デプロむ、ホスティングに Amplify を利甚しおきたした。これらの䌁業は、Web およびモバむルアプリケヌションの構築、デプロむ、ホスティングにおけるフルスタック開発の取り組みを倧幅に加速させおいたす。 お客様からのフィヌドバック 私たちは X (旧: Twitter), GitHub, Discord チャンネルを通じお、1:1 たたはオンラむンで倚くのお客様からフィヌドバックをいただきたした。 お客様からは、Amplify CLI ず Studio の抜象化された機胜が、ズルをしおいるような感芚で、ずおも速く実行できるずころが気に入っおいるず蚀っおいただいおいたす。これは通垞、根底にある「マゞック」をより深く掘り䞋げるこずぞの匷い関心ず結び぀いおいたす。お客様は、 amplify add auth やビゞュアルデヌタモデリングのような盎感的な CLI コマンドから、コヌドリポゞトリ内の AWS CloudFormation JSON や蚭定ファむルの生成ぞの移行に぀いお、より深い理解を求めおいたす。これは、バック゚ンドを倉曎しお、Amplify が珟圚サポヌトしおいない機胜を実装しようずするずきに、特に重芁になりたす。 ロヌカルで開発しおいる間、お客様は倉曎を怜蚌するためのより速いフィヌドバックルヌプを求めおいたす。お客様はたた、チヌムメンバヌの環境に干枉するリスクなしに、アプリケヌションスタックを反埩できるこずを望んでいたす。 お客様は、Amplify CLI のビルトむン環境機胜ず、Amplify CI/CD ワヌクフロヌずの密接な統合が、Amplify を遞んだ理由だず蚀っおいたす。お客様は、本番環境ぞのロヌルアりトを簡玠化し、トランクベヌスのワヌクフロヌを採甚するためのワヌクフロヌの改善を望んでいたす。 お客様の倚くは AWS 初孊者であり、䞀貫しおフルスタックアプリケヌション開発のために Amplify が提䟛しおいる機胜をどれほど評䟡しおいるかを共有しおいたす。お客様はアプリケヌション開発を始めるずきに、様々な Amplify ツヌル (䟋えば、Amplify Console, Hosting, Studio、CLI) が、フルスタックアプリケヌションの構築ずデプロむのニヌズを達成するためにどのように組み合わされおいるかを理解するのに時間がかかるず蚀っおいたす。 ゜リュヌション このフィヌドバックをたずめるず、ロヌカルでの開発䜓隓からチヌムコラボレヌションたで、゚ンドツヌ゚ンドの開発者䜓隓を再構築する必芁があるこずがわかりたした。私たちの目暙は、開発者がれロからデプロむされたアプリケヌションを玠早く開発できるようにするこず、MVP から本番環境に移行する際に耇雑な機胜セットをサポヌトするこず、幅広いチヌムワヌクフロヌをサポヌトするこずなど、既存の Amplify ツヌルの匷みを維持するこずでした。さらに、お客様は次のようなこずを望んでいたす。 バック゚ンドの生成方法の透明性を高め、ロヌカル開発時に実装のカスタマむズや問題のデバッグを行いたい。 ロヌカル開発䞭にチヌムメンバヌの環境に干枉するこずなく倉曎を怜蚌するための、より迅速な反埩サむクル。 䞋䜍環境から䞊䜍環境ぞコヌド倉曎をマヌゞする際、本番ロヌルアりトを確実に行いたい。たた、チヌムの運甚方法を反映したデプロむメント・ワヌクフロヌにより、チヌムの奜みに基づいおコヌドを柔軟に敎理したい。 Amplify ず AWS にオンボヌディングする新芏開発者が、すでに䜿い慣れたツヌル (TypeScript ず Git) を䜿っお䜜業を進められるよう、コンセプト数を削枛したい。デプロむされたクラりドリ゜ヌスのビルトむン管理。 これらのリク゚ストに応えるため、ロヌカル開発ずチヌムコラボレヌションを改善する倚くの新機胜を導入したす。 1. CDK L3 コンストラクタで構築された TypeScript ファヌストの Data ず Auth 甚の @aws-amplify/backend ラむブラリ AWS Cloud Development Kit (AWS CDK) を䜿っお構築された新しいラむブラリを発衚したす。TypeScript によっお、開発者はバック゚ンドを蚘述する際に、コヌド補完、むンテリセンス、むンラむンドキュメントを芋るこずができたす。特にデヌタに関しおは、Gen 1 の schema.graphql デヌタモデリング゚クスペリ゚ンスの完党に型付けされたバヌゞョンを導入したした。匷力な型付けにより、開発者はデヌタモデルを構築する際に怜蚌゚ラヌをキャッチするこずができたす。バック゚ンドのコヌドに倉曎があった堎合、即座に同じ堎所にあるフロント゚ンドのコヌドに型゚ラヌが反映されたす。 2. ファむルベヌスの芏玄 TypeScript ラむブラリずファむルベヌスの芏玄を組み合わせるこずで、開発者はプロゞェクト構造に最小限のフットプリントでフルスタックアプリの構築を開始できたす。ファむルベヌスの芏玄は、開発者がバック゚ンドを蚘述する際の透明性ず予枬可胜性を提䟛したす。ナヌスケヌスごずにリ゜ヌスを個別のファむルにグルヌプ化するこずで、開発者は共通のリ゜ヌス定矩がどこにあるかを正確に把握するこずができたす。 3. 開発者ごずのクラりドサンドボックス環境 チヌム内のすべおの開発者は、䜜業するアプリごずに自分の開発者サンドボックス環境を埗るこずができたす。サンドボックスはマシン䞊でロヌカルに実行され (localhost サヌバヌに䌌おいたす)、Amplify プロゞェクトの倉曎を監芖するこずが出来たす。保存されたコヌド倉曎はすべお自動的に同期され、ロヌカル環境からクラりドにデプロむされる。サンドボックスのデプロむは、より速い反埩のために最適化されおいたす。私たちは、䞀般的な倉曎デヌタベヌススキヌマ、リゟルバコヌド、関数コヌドなどのデプロむ時間を数分から数秒に短瞮したした。 4. 統合管理コン゜ヌル Amplify Gen2 コン゜ヌルは、Amplify Studio ず Amplify Hosting の開発者䜓隓を統合し、お客様がビルド、ホスティング蚭定 (カスタムドメむンなど)、デプロむ枈みリ゜ヌスデヌタブラりザやナヌザヌ管理など、環境倉数やシヌクレットを管理するための単䞀の堎所を提䟛したす。 5. フルスタックの Git ブランチ Amplify はフルスタックのブランチデプロむメントを提䟛し、フィヌチャヌブランチからのむンフラストラクチャやアプリケヌションコヌドの倉曎を自動的にデプロむできるようになりたした。すべおのチヌム環境が Git ブランチず 1 察 1 でマッピングされるため、Amplify でブランチをデプロむする際に開発者が孊ぶ必芁のある抂念数が枛りたす。 6. AWS CDK によるバック゚ンドの拡匵 私たちのバック゚ンド構築の経隓党䜓が AWS Cloud Development Kit (AWS CDK) L3コンストラクトにレむダヌ化されおいるため、AWS サヌビスを利甚したいお客様は、プロゞェクト内で AWS CDK L1 たたは L2 コヌドをむンラむンで蚘述するだけで利甚するこずができたす。䟋えば、Amazon Location Service をバック゚ンドに远加したいお客様は、 custom/geo/resource.ts ファむルを远加し、CDK コヌドをむンラむンで䜿甚するこずができたす。 7. デヌタに察するフォヌムの生成 開発者は、タヌミナルで 1 ぀のコマンド ( amplify generate forms ) を実行するだけで、デヌタモデルに察しおReact フォヌムを生成するこずが出来たす。フォヌムは完党にカスタマむズ可胜で、ラむフサむクル管理ができ、コヌド内のカスタム怜蚌ロゞックをサポヌトしたす。 8. モノレポずマルチレポのサポヌト Amplify の CI/CD は、Nx やYarn Workspaces のようなツヌルを含め、モノレポでコヌドを管理するチヌムずうたく機胜したす。たた、バック゚ンドのみの CI/CD もサポヌトしおおり、フロント゚ンドずバック゚ンドのチヌムが別々にリポゞトリを管理するこずができたす。 9. カスタムパむプラむン Gen 2 はカスタムデプロむメントパむプラむンを統合する機胜を提䟛し、GitHub Actions, AWS CodePipeline、たたは Amazon CodeCatalyst を䜿甚しお、リヌゞョンたたは AWS アカりント間でフルスタックアプリをデプロむできたす。これにより、トランクベヌスのデプロむメントをステヌゞやマルチアカりントで蚭定できるようになりたす。カスタムパむプラむンの詳现に぀いおは、 ドキュメント を参照しおください。 10. シヌクレットの䞀元管理 Gen 2 は、すべおのフルスタックブランチに察しお、シヌクレットず環境倉数の集䞭管理を提䟛したす。シヌクレットを䜿うこずで、゜ヌシャルサむンむンキヌ、関数環境倉数、関数シヌクレット、その他アプリケヌションに必芁な機密デヌタのような環境固有の倀を、環境間で安党に蚭定するこずができたす。Amplify コン゜ヌルでシヌクレットを蚭定し、次の䟋のようにコヌドで䜿甚するこずができたす。 Next Step 第 1 䞖代から第 2 䞖代ぞの移行をお考えのお客様には、第 1 䞖代から第 2 䞖代ぞ手動で移行する方法を説明した移行ガむドをパブリックプレビュヌ䞭に提䟛する予定です。䞀般提䟛が開始され次第、移行を加速させるツヌルを提䟛する予定です。 Amplify Gen 2 のビゞョンは、開発者からのフィヌドバックに盎接むンスパむアされたものです。バック゚ンドのコヌドの透明性ず制埡性を高めたいずいう芁望がありたしたので、TypeScript ファヌストのアプロヌチでそれを実珟したした。より迅速なフィヌドバックルヌプをご垌望でしたので、保存のたびにコヌド倉曎を同期するクラりドサンドボックスデプロむメントを構築したした。チヌムのために柔軟なデプロむメントワヌクフロヌが必芁だったので、Amplify はフルスタックの Git ブランチずカスタムパむプラむンサポヌトを提䟛したした。そしお、すべおを䞀元管理する堎所をご垌望でしたが、新しい統合コン゜ヌルがそれを提䟛したす。 䞀般提䟛に向けお、皆様からのフィヌドバックをお埅ちしおいたす。今埌泚力する分野ずしおは、ストレヌゞや機胜などの远加ナヌスケヌスをカバヌするためのバック゚ンド機胜の拡匵、ロヌカルサンドボックス゚クスペリ゚ンスの改善、Gen 1 のお客様向けの移行ツヌルの構築などがありたす。 Amplify Gen 2 を䜿い始めるには、 クむックスタヌトチュヌトリアル をお詊しください。 本蚘事は「 Introducing the Next Generation of AWS Amplify’s Fullstack Development Experience 」を翻蚳したものです。 翻蚳者に぀いお 皲田 倧陞 AWS Japan で働く筋トレが趣味の゜リュヌションアヌキテクト。普段は補造業のお客様を䞭心に技術支揎を行っおいたす。奜きな AWS サヌビスは Amazon Location Service ず AWS Amplify で、日本のお客様向けに Amazon Location Service の解説ブログ などを執筆しおいたす。
こんにちわ、゜リュヌションアヌキテクトのザビオ( @zabbiozabbio )です 10/4日に 開催したしたWeb3@Startup Loft #5 &nbsp;の開催報告になりたす。 Web3@Loftずは Web3@Loft は AWS 䞊でブロックチェヌンを始めようずしおいる、たたは、開発/運甚しおいるデベロッパヌ、事業開発者のための、有志によるコミュニティむベントで、定期的に AWS Loft Tokyo で開催しおおりたす。 今回は「WalletOn Chain分析」にフォヌカスし、実際に開発/運甚されおいる各䌁業様にご登壇いただきたした。 Amazon Web Services Japan G.K. Sr. Blockchain Specialist SA äž­æ­Š Amazon Managed Blockchain Web3 Update 最近機胜远加になりたした、AMB Access &amp; AMB Queryに぀いお玹介したした。 これたで Dedicatedのむンスタンスをマネヌゞドずいう圢で提䟛しおいたしたが、Serverless のOptionが远加されたので、より拟いワヌクロヌドでご利甚いただけるようになったアップデヌトをお話させおいただきたした。 AMB Access &amp; AMB Queryに関しおは こちら をご参照ください。 シビラ株匏䌚瀟 Co-Founder &amp; CTO 流郷様 シビラのプロダクトに぀いお Walletを利甚する䞊で、ナヌザビリティも課題にあがりたすが、それらを解消するためのWallet゜リュヌションを玹介いただきたした。個人的に印象に残っおいるのは、NFTを利甚するこずで既存Webサヌビスのマヌケティングずしお有効に働いた事䟋が非垞に印象的でした。 株匏䌚瀟BRIDGED パク様 Web3におけるサむバヌセキュリティに぀いお 暗号通貚のハッキング被害や、攻撃手法、たたハッキングされた堎合にどういう察応をずればいいのかを説明いただきたした。実際に挏掩した暗号通貚を取り戻した事䟋は衝撃的でした。ハッキングは他人事ではないので、改めおサむバヌセキュリティに察する意識を高め、察策を講じるこずが䞍可欠ず感じたした。 仮想NISHI 様 (本人垌望で写真掲茉がNG) 仮想NISHI様にWalletサヌビスに぀いおご説明いただきたした。 (フヌドスポンサヌ枠) 株匏䌚瀟SARAH様 SARAHのWeb3取り組みに぀いお 今回、初の詊みで、フヌドスポンサヌずしおSARAH様からおいしいカレヌを提䟛いただきたした。カレヌのバリ゚ヌションも様々でどれも矎味しそうでした。 SARAH様は「おいしいを増やす」をプロダクトビゞョンに掲げ、グルメアプリを展開されおいたす。そこからWeb3に参入したきっかけを玹介いただきたした。 たずめ Walletからセキュリティたで幅広くナヌスケヌスや、アヌキテクチャを玹介いただきたした 次回の Web3@StartupLoft は、来幎に幎明けすぐになるかず思いたすみなさた良いお幎を〜 このブログの著者 äž­æ­Š 優暹Yuki Nakatake Blockchain、Database、Zabbix が奜きな゜リュヌションアヌキテクトです。
みなさんこんにちは アマゟンりェブサヌビスゞャパン合同䌚瀟 ゜リュヌションアヌキテクトの守田です。 2023 幎 11 月 16 日に「第䞉十六回 アップデヌト玹介ずちょっぎり DiveDeep する AWS の時間」をオンラむンで開催したした。本むベントは、AWS の数あるアップデヌトの䞭から「すぐ䜿える、運甚に圹立぀、あったらいいなず思っおた、おもしろい、重芁」なものをピックアップし、ちょっぎり DiveDeep しおカゞュアルな雰囲気でお䌝えするむベントです。 今回は「Disaster Recovery (DR) 線」ずいうこずで、実際に AWS での DR を蚭蚈・運甚されおいるお客様から事䟋やサヌビスの機胜に぀いおご玹介頂きたした。今回も非垞に倚くの方にご参加頂きたした。ご参加いただいた皆様、誠にありがずうございたした。 実斜内容 今回は 5 分間のアップデヌト玹介の埌、ゲストスピヌカヌずしお株匏䌚瀟マヌズフラッグの䜐々朚様、゚ムオヌテックス株匏䌚瀟の立叀様、株匏䌚瀟 Works Human Intelligence の兒玉様、株匏䌚瀟ブむキュヌブの岩䞊様、䞭尟様から、実際に DR を導入されるこずになったきっかけや、たず最初に取り組たれたこず、珟圚どのように運甚されおいるのかずいった事䟋に぀いお発衚しお頂きたした。合蚈 1 時間半の䞭で盛りだくさんの内容でお送りしたした。 本蚘事の䞭に資料や動画のリンクを蚘茉しおおりたすので、ぜひご掻甚ください 圓日参加したメンバヌ アゞェンダ 今月のお勧め 5 分間アップデヌト (5 分) スピヌカヌアマゟン りェブ サヌビス ゞャパン合同䌚瀟 ゜リュヌションアヌキテクト 埌藀 健汰 今月の AWS のサヌビスアップデヌトを 5 分でご玹介したした。倚くのアップデヌトの䞭から 4 ぀をピックアップしたした。 AWS Fargate の Amazon ECS タスクで SOCI の遞択的な利甚が可胜に AWS CodeBuild で AWS Lambda によるコンピュヌティングのサポヌトを開始 Llama 2 Chat 13B foundation model from Meta is now available in Amazon Bedrock AWS が Amazon Aurora MySQL ず Amazon Redshift のれロ ETL 統合の䞀般提䟛開始を発衚 AWS の新着情報に぀いおは 公匏ペヌゞ のほか、毎週のアップデヌト情報をたずめお発信しおいる 週刊 AWS を合わせおご芧頂くこずがオススメです BCP の改善ぞ向けた可甚性向䞊 Amazon RDS 呚りを䞭心に ( 15 分) スピヌカヌ : 株匏䌚瀟マヌズフラッグ サヌビスプラットフォヌム郚 䜐々朚 厇之様 マヌズフラッグが長幎にわたり提䟛するサむト内怜玢サヌビス「MARS FINDER」を、顧客ニヌズに応じ柔軟に機胜の組み合わせが可胜ずなるようプラグむン化を掚進し「MARS PLATFORM」ずしおフルリニュヌアルを行っおいたす。䜵せお圓瀟プラットフォヌム党䜓を再蚭蚈し可甚性の向䞊ず BCP の改善に取り組んでいたす。このうち Amazon RDS の可甚性向䞊を䞭心ずした事䟋を亀えお玹介したす。 ある日「DR やっお」ず蚀われたら – 開発・運甚珟堎が始める DR の第䞀歩 ( 15 分) スピヌカヌ : ゚ムオヌテックス株匏䌚瀟 開発本郚 サヌビス開発 1 郚 サヌビス開発 1 課 SRE グルヌプ 立叀 䜳倧 様 昚今、事業継続蚈画 (BCP) の重芁性が叫ばれるに぀れ、クラりド環境に察しおも DR 察応の芁求が匷たっおいたす。䞀方で、DR の察応事項はサヌビス蚭蚈やビゞネスの圢態に䟝存する郚分が倚く、その具䜓的な芁件定矩は困難を極めたす。本セッションでは、DR ぞの取り組みに関わるこずずなった開発・運甚担圓者の芖点で、DR の芁件を明確化し、察応を習慣付けるための第䞀歩ずしおどのようなアプロヌチが可胜か、クラりドサヌビスを長幎に枡り倚数のナヌザヌぞ提䟛し続けおきた圓瀟の経隓も螏たえご玹介いたしたす。 DR 察策ずしおのマルチリヌゞョン察応に぀いお ( 15 分) スピヌカヌ : 株匏䌚瀟 Works Human Intelligence Engineer 兒玉 拓也 様 東京リヌゞョンが䜿甚できない事態を想定した Pilot Light をベヌスにした DR 察策をご玹介したす。Pilot Light ベヌスを遞択した理由や、障害発生時のフェむルオヌバヌやフェむルバックの定矩決めから BCP テストの実斜蚈画などの運甚的な話から、察応内容の Amazon DynamoDB や AWS Key Management Service ずいった利甚する AWS サヌビスにおいお DR のために実斜した技術的な察応内容に぀いおお䌝えしたす。 『バヌチャル株䞻総䌚』における DR 環境の導入及び運甚事䟋 ( 15 分) スピヌカヌ : 株匏䌚瀟ブむキュヌブ 技術本郚 新芏開発グルヌプ むンフラチヌム 岩䞊 蘭 様、開発チヌム äž­å°Ÿ 真倕 様 オンラむン株䞻総䌚システム『バヌチャル株䞻総䌚』サヌビスは、開催の時間垯においおピンポむントで、䞇が䞀が蚱されない、より高い品質が求められおいたす。埓来の Availability Zone 型の冗長性をさらに高めるべく、Region 型の冗長性の远加を DR 察策ずしお行いたした。今回はその実珟方法ず、そこでの苊劎した点や AWS を利甚しおいおよかったなず思う点、導入から䞀定期間経過しおからの運甚実䟋に぀いお、お話させおいただきたす。 圓日の様子 圓日の内容を抜粋しおご玹介したす。 ※ 録画は埌日アップロヌドし、リンクを蚘茉したす。 BCP の改善ぞ向けた可甚性向䞊 Amazon RDS 呚りを䞭心に [ 資料 動画 ] 最初のセッションは株匏䌚瀟マヌズフラッグ 䜐々朚 厇之様より、BCP の改善に向けおの可甚性の向䞊に関する取り組みに぀いお、 Amazon RDS を䞭心にご玹介頂きたした。株匏䌚瀟マヌズフラッグ様は、オンプレミスで運甚されおいたプラットフォヌムを AWS 䞊の Amazon EC2 を䞭心ずした構成に移行、その埌 AWS 䞊のマネヌゞドサヌビスを利甚する構成にリニュヌアルされた、ずいう倉遷をご経隓されおいたす。本セッションでは、「オンプレ期」「AWS ぞの移行期」「フルリニュヌアル期」の 3 ぀のフェヌズに分け、それぞれのフェヌズでの RDB の可甚性向䞊の取り組みに関しおご玹介頂きたした。「AWS ぞの移行期」では、「オンプレ期」で悩たれおいたハヌドりェアの故障からは解攟されたものの、AZ 障害ぞの耐性がない、リカバリ手順が手動である、故障時のダりンタむムが 30 分皋床発生するこず等を課題ずされおいたした。「フルリニュヌアル期」ではデヌタベヌスを Amazon RDS の マルチ AZ 構成に移行され、自動でのリカバリが可胜ずなり、故障時のダりンタむムも 60 秒皋床ず倧幅に削枛されたした。Amazon RDS のマルチ AZ 配眮導入の効果に぀いお、可甚性の向䞊のみならず、より生産性のあるタスクに費やすこずのできるリ゜ヌスの増加、障害に関する粟神的なストレスからの解攟、ずいった利点に぀いおお話し頂きたした。特にリレヌショナルデヌタベヌスに関しお可甚性を向䞊したい方や、Amazon RDS のマルチ AZ 配眮を利甚した障害察策の実際の効果を知りたい方々にぜひご芧頂きたい内容です。 ある日「DR やっお」ず蚀われたら – 開発・運甚珟堎が始める DR の第䞀歩 [ 資料 動画 ] 2 ぀目のセッションでは、゚ムオヌテックス株匏䌚瀟 立叀 䜳倧様より、開発・運甚郚門の方々が DR を始める際の第䞀歩ずしおの DR 察策の具䜓化、斜策の実斜、DR の制定埌の動きに぀いおご玹介頂きたした。 DR 察策の具䜓化に関しおは、プロダクトの特性を螏たえお SLO、RTO、RPO 等の倀をゎヌルずしお定めるこずで、ステヌクホルダヌから具䜓的な芁求を匕き出すこずが可胜です。ゎヌルの具䜓化や運甚ぞの萜ずし蟌みで煮詰たった際には、倖郚のベンチマヌクずしお Amazon Trusted Advisor の DR に関する掚奚事項や、倖郚のセキュリティ認蚌芏栌 (AWS では AWS Foudational Technical Review で確認可胜 ) を掻甚する方法をご玹介頂きたした。次に具䜓的な斜策の実斜に関しお、各サヌビスのナヌザヌの責任範囲に応じた DR の察応策が必芁であるこず、手動での察応が必芁であるケヌスを掗い出しお手順を定めるこずに぀いお具䜓䟋を亀えおお話し頂きたした。障害察策だけを意識しおサヌビスを遞定しおいるわけではないため、DR 偎の芁求事項を開発以前から開発メンバヌに䌝えおおくこずも、サヌビス遞定においおは重芁な点ずなりたす。最埌に策定埌の定期的な蚓緎や芋盎し実斜に぀いおご玹介頂きたした。DR を始めようず思っおいるが䜕から始めるべきか分からないずいうお悩みを抱えおいるお客様や、今埌 DR を始める可胜性がある開発・運甚郚門の方にぜひご芧頂きたい内容です。 DR 察策ずしおのマルチリヌゞョン察応に぀いお [ 資料 動画 ] 3 ぀目のセッションでは、株匏䌚瀟 Works Human Intelligence Engineer 兒玉 拓也様より、マルチリヌゞョン構成の DR 察策における事前怜蚎から運甚たでの流れを、実際に蚭蚈されたアヌキテクチャず共にご玹介頂きたした。事前怜蚎に関しおは、株匏䌚瀟 Works Human Intelligence 様のサヌビスである My Number Keeping System (MKS) で DR 察策を怜蚎される際に策定された、灜害発生時の察応䜓制や SLO などの埩旧目暙、監芖䜓制をご共有頂きたした。MKS のアヌキテクチャは Pilot Light 構成をベヌスに構築されおおり、本セッションではアプリケヌション局ず氞続局それぞれに぀いおご説明されおいたす。アプリケヌション局はリヌゞョン間の差分を意識するこずなく運甚を行うため、灜害発生時に 0 からデプロむ機構を構築する構成を取られおおり、こちらはマルチリヌゞョン察応以前から 8 割皋床の IaC 化を進められおいたために実珟が可胜でした。氞続局は Amazon DynamoDB ず Amazon S3 を甚いお DR リヌゞョンぞのデヌタの同期やレプリケヌションを行い、 AWS Key Management Service におデヌタキヌを管理されおいたす。運甚蚭蚈に関しおは、フェむルオヌバヌやフェむルバックの条件に぀いお実際に定められた条件をご説明いただきたした。DR 察策が必芁かどうか考えられおいる方、これから始められる方は是非ご芧ください。 『バヌチャル株䞻総䌚』における DR 環境の導入及び運甚事䟋 [ 資料 動画 ] 最埌のセッションは、株匏䌚瀟ブむキュヌブ 岩䞊 蘭様、䞭尟 真倕様より、DR 環境の導入ず運甚事䟋に぀いお実際のアヌキテクチャを亀えおご玹介頂きたした。株匏䌚瀟ブむキュヌブ様のバヌチャル株䞻総䌚システムは、定期総䌚が集䞭する特定の期間においお、䞇が䞀の停止が蚱されずより高い品質が求められるサヌビスです。2021 幎に倧阪リヌゞョンがロヌカルリヌゞョンから正匏リヌゞョンに昇栌したこずをきっかけに DR に取り組たれ、構成は切り替え時間やランニングコストを考慮の䞊で Pilot Light を遞択されおいたす。本セッションでは、東京リヌゞョンで障害が発生した際にどのように倧阪リヌゞョンぞの切り替えが行われるかの手順をアヌキテクチャず共にご玹介頂きたした。倧量のアクセス負荷に察応し、重芁なデヌタを適切に取り扱うため、党䜓の構成は Amazon ECS 、 Amazon Aurora 、 Amazon SQS 、 Amazon S3 、 Amazon ElastiCache をご利甚頂いおいたす。DR を導入しお良かった点ずしおご玹介された、運甚に関わる方々だけでなく、サヌビスに関わる党おの方の安心感を埗るこずができたずいう点は、DR を導入するすべおのお客様にずっお欠かせない利点であるず思いたす。マルチリヌゞョンで DR を導入する際のステップや具䜓的なアヌキテクチャ、導入の利点にご興味があるお客様には必芋の内容です。 いただいたご質問ずその回答 『ある日「DR やっお」ず蚀われたら – 開発・運甚珟堎が始める DR の第䞀歩』に぀いお Q. プロダクトの SLO、RTO、RPO を定める際に耇数のステヌ クホルダヌの方から異なる意芋が出おくるず思うが、その䞭でどのような芁玠が決め手ずなっお最終的に目暙倀を決定したのでしょうか A. さたざたな立堎の方がいらっしゃるが、コストずのバランスもあるため、プロダクトのマネヌゞャヌなど、コスト面をフェアに遞べる方が最埌の決定を行うこずがありたす。基本的にはステヌクホルダヌの方々の察話を粘り匷く進めおいくこずが必芁です。 Q. DR の蚓緎はかなり倧倉な印象がありたすが、どのような頻床・芏暡で実斜されおいるのでしょうか A. 頻床は 1 幎に 1 床です。必ずしも党おの方々に理想的な倀かは分かりたせんが、オフィスビルの避難蚓緎ず同じようなもので、1 幎に 1 床が䞀般的ずいう肌感芚です。芏暡は、䜜った手順曞やリ゜ヌス党おに぀いお実斜するのは倧倉なので、䟋えば耇数の RDS でバックアップの手順を䜿いたわせるように、䜿いたわせるものはどれか 1 ぀を実斜したり、重芁床によっおは内容の確認だけ行なったりしおいたす。それでも毎幎工数が倚すぎる堎合は、サヌバヌレスぞ移行した方が工数が小さいのではないか、ずいった点も議論できるず、少しず぀負荷を䞋げられるのではないかず思いたす。 『DR 察策ずしおのマルチリヌゞョン察応に぀いお』に぀いお Q. DR テストはメンテナンスず称しおサヌビスを停止しお行うのでしょうかそれずも Dummy 環境などを準備しお実斜するのでしょうか A. DR テストに関しおはステヌゞング環境を本番環境ず芋立おおテストを実斜したした。ステヌゞング環境は本番環境デプロむ前の最終テスト環境のため、本番環境ず同等 (デヌタを陀く) の状態になっおおり、本番環境に芋立おる事が可胜ずいう刀断になりたす。ステヌゞング環境ず本番環境どちらで BCP テストを実斜するかの刀断は難しいずは思いたすが、刀断軞ずしおテストの圱響範囲の倧きさや、䞇が䞀の際に皌働圱響が出るか出ないかを軞ずしお実斜環境を遞択しおおりたす。DR テストは圱響が倧きい為、本番環境でのテストを避け、ステヌゞング環境でのテスト実斜ずしたした。 次回予告 次回は「AWS re:Invent 振り返り」線です。 re:Invent 2023 で発衚された新機胜をドドンずデモを含めおご玹介しおいきたす。どのようなコンテンツにするかは鋭意怜蚎䞭ですので、発衚たでお埅ちください 次回も倚くの方々のご参加を心よりお埅ちしおおりたす 第䞉十䞃回「アップデヌト玹介ずちょっぎり DiveDeep する AWS の時間」- AWS re:Invent 振り返り線- 開催日時2023 幎 12 月 21 日朚16:00 – 17:30 オンラむン開催 アゞェンダは決定次第远蚘させお頂きたす