AWS関連のことを調べてみた2022年01月21日

AWS関連のことを調べてみた2022年01月21日

CodeCommitのmainブランチへのプッシュとマージを制限

### はじめに
 mainブランチへの誤ったpush対策として[pre-pushファイルを使用した対策](https://qiita.com/january108/items/05ab9e2f1d713f6efae3)を行っていました。
 GitのリポジトリをCodeCommitで運用することになり、同じような対策をIAMポリシーを使用し行ったので、その設定方法を記事にしたいと思います。

### 本記事でやったこと
IAMポリシーを使用しCodeCommitに下記、制限を設定する。

+ mainブランチへpushを禁止。
+ mainブランチへのマージをプルリクエストからに制限。

### 手順
※[AWS CodeCommit のブランチに対するプッシュとマージの制限](https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/how-to-conditional-branch.html)を参考にIAMポリシーを作成しました。
1.AWSのIAM コンソール (https://console.aws.amaz

元記事を表示

VMware Cloud on AWS のサイジングについて (VMware Cloud Sizerほか)

#1. はじめに
「[VMware Cloud on AWS](https://www.vmware.com/jp/products/vmc-on-aws.html)」の簡易サイジングであればどなたでも無料でお手軽にできますよというご紹介をします。Tipsも合わせてご紹介します。

> 高度なサイジング用のWebツールおよび手法についてはVMware社のブログが分かりやすいのでご参考ください。
> VMware Japan Blog: [「VMware Cloud on AWS のサイジング(高度 Sizer によるサイジング)」](https://blogs.vmware.com/vmware-japan/2021/12/vmware-cloud-on-aws-sizing-detail.html)

#2. VMware Cloud on AWSのサイジングは必要?
オンプレミス環境に限らずクラウドサービスを利用する際もサイジング、つまりどの程度の性能の物理サーバーやストレージが何台(あるいはコンピュートリソースがどれぐらい)が必要かというのは事前に検討するかと思います。いやいや

元記事を表示

クラウドオーケストレーターのはじめかた〜AWS 管理編〜

# 目次
– [AWS Cloud service provider の追加](#aws-cloud-service-provider-の追加)
– [ロールの作成とパーミッションの設定](#ロールの作成とパーミッションの設定)
– [VPC ネットワークリソースの作成](#vpc-ネットワークリソースの作成)
– [起動テンプレートの作成](#起動テンプレートの作成)
– [インスタンスの起動](#インスタンスの起動)

# この記事は

前回の記事**[クラウドオーケストレーターのはじめかた](https://qiita.com/dcm_naoi/items/880799021f43815fc8c9)**では**[クラウドオーケストレーターのインストール](https://qiita.com/dcm_naoi/items/880799021f43815fc8c9#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)**と **[Kubernetes のセットアップ](https://qiita.com/dcm_naoi/it

元記事を表示

Amazon Managed Blockchain を構築してみた

# はじめに

Blockchain 技術が世の中で話題になりつつあります。「改ざんが難しい」「複数の組織の間でトランザクションを共有できる」といったメリットがあり、物理的な壁を越えたスムーズな相互の手続きが注目されている状況となっています。

Blockchain には、ざっくりわけて2種類のタイプで分けることができます (もっと詳細な分類はありますが、、、)

– 中央集権型
– 非中央集権型 (分散型)

中央集権型は、とある信頼された1個の中央組織が Blockchain ためのリソースを利用し、トランザクションを管理する方式です。中央組織が提供するトランザクション機能を、他の組織が利用することで、互いに手続きを共有することができます。中央管理されたデータストアに Blockchain の技術を活用することで、データ改ざんを防ぎ、信頼されたデータを管理することが可能になります。AWS のサービスだと、Amazon QLDB がこれに該当します。

非中央集権型は、複数の組織にまたがったトランザクションを共有する形です。Blockchain のネットワークに参加する複数の組織が、

元記事を表示

プロパティ ‘data’ は型 ‘GraphQLResult | Observable‘ に存在しません。ts(2339)の対処メモ

## TypeScript & Amplifyで起きるエラーの対処メモ

Amplifyで作成した開発環境でGraphQLのスキーマを読み込もうとしたらこんなエラーが

“`js
async function fetchNotes() {
const apiData = await API.graphql({ query: listNotes });
setNotes(apiData.data.listNotes.items);
}
“`
“`
プロパティ ‘data’ は型 ‘GraphQLResult | Observable‘ に存在しません。
プロパティ ‘data’ は型 ‘Observable‘ に存在しません。ts(2339)
“`

TypeScriptの型定義がされてないため、エラーが起きています。

## 解決策

“`
// @ts-ignore
“`

を加えると、エラーが回避されます。

例:

“`js
const apiData = await API.graphql({

AWSコンテナ設計・構築[本格]入門 の感想とハンズオンではまったポイント

## 概要

AWSコンテナ設計・構築[本格]入門を年末にハンズオンをやってみたのでその感想とはまったポイントのメモを残しておこうかと思います。(4章までしかできていませんが・・・)

## 書籍の感想

* Amazonの評価やほかの方もブログ等で高評価がついている通り、なかなかためになる内容でした。([こちら](https://dev.classmethod.jp/articles/bookreview-introduction-guide-aws-container-design-and-construction/)の記事が本の内容について良くまとまっているかと)
* なぜコンテナを使うか?というところの説明などもあり概念としては知っていても実際はどうなのか?を理解する助けにもなりました。
* 具体的な構成についての例も載っておりそちらも理解の助けになりました
* 説明部分の1~3章に続きハンズオンの4,5章があり、4章のみ実施しましたが、ECSの実際の動かし方などを確認できました。5章はまだ実施できていません・・・

## ハンズオンのはまったポイント
以下はハンズオンでは

CloudFormation での IAM Policy (管理ポリシー)作成

最近CloudFormationをいじっているのだけど、いろいろと詰まることが多い。今日はIAMのPolicy作成でつまった。

以下のAWS::IAM::Policy を利用してポリシー作成したらインラインポリシーになってしまった。思いっきり最初の文章にかいてあるのだけど、読まずにさわっていた。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-roles

どうやら管理ポリシーとして作成する場合はAWS::IAM::ManagedPolicyを利用するらしい。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-policydocument

インラインポリシーの場合はロール側にVersionがあれば正常とみな

AWS CodeDeployエージェントのサポートRubyバージョン

## CodeDeployエージェントとRuby
[AWS CodeDeployエージェントをインストール](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html)する上では前提条件としてRubyをインストールしろと記載されているが、そのバージョンは記載されていない。
Rubyのバージョンを3系などにアップデートして大丈夫なのか知りたかったけれど、ドキュメントには記載がなかった。
CodeDeployエージェント自体は[OSSとして公開されている](https://github.com/aws/aws-codedeploy-agent)が、READMEにもリリースノートにもRubyバージョンは記載がなかった。

## 実装の確認
最新のバージョン1.3.2における[エージェント起動スクリプト](https://github.com/aws/aws-codedeploy-agent/blob/1.3.2/bin/codedeploy-ag

AmplifyでのGraphQL APIをコールする

#前提

1.`amplify add api`コマンドで、GraphQL APIを追加する

“`
amplify add ap

? Please select from one of the below mentioned services:
> GraphQL
? Here is the GraphQL API that we will create. Select a setting to edit or continue:
> Continue
? Choose a schema template:
> Single object with fields (e.g., “Todo” with ID, name, description)
? Do you want to edit the schema now?
> Yes
“`
2.`amplify/backend/api/myapi/schema.graphql`を編集する

“`schema.graphql
type Todo @model {
id: ID!
name: String!

AmplifyでのRestApiをコールする

#前提

1.`amplify add api`コマンドで、Rest APIを追加する

“`
amplify add ap

? Please select from one of the below mentioned services
GraphQL
❯ REST
“`

2.`amplify push`コマンドで作成したRest APIをAWSにデプロイし、
 AWSの`Lambda`と`API Gateway`サービスへ反映する

“`
amplify push
“`

3.`amplify console`コマンドでデプロイしたサービスを確認する

“`
amplify console
“`

#実装

“`restApiUtil.js
import Amplify, { API } from ‘aws-amplify’;
import config from “./aws-exports”;

Amplify.configure(config);

/**
* DELETEメソッド
* @param {string} apiName api名
*

ElastiCache for Redis failover 挙動まとめ・図解

# 前提
シャード数2、レプリカ数3、同リージョン内で、下図のような構成のfailoverを考える。

![ElastiCache.drawio (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2362212/95a95d11-8cc1-d9ad-1227-5f90e1dd5c73.png)

# Shard #1, Shard #2それぞれでReplica Node-1が死んだらどうなる?
単純に死んだAZ内にもう一度Replica Nodeを再生成します。

– Shard #1のReplica Node-1が死んだ場合
![ElastiCache.drawio (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2362212/a42b497e-d8ec-7efe-c5a9-2ec30e797937.png)

Shard #2のReplica Node-1が死んだ場合やReplica Node-2が死ん

AWS逆引きメモ

## “aws configure”を実行するとconfigが読み込まれなくなる問題

### 症状

`Windows 10 Pro`の`AWS CLI V2`にて現象を確認。

“`powershell
aws configure list-profiles
“`
“`
Unable to parse config file: C:\Users\test/.aws/credentials
“`

### 対応内容
該当ファイルをテキストエディタで開いて修正

### 原因
AWS CLI以外のツールからプロファイルを作成していると起こる。
筆者の場合は`AWS Toolkit for Visual Studio`から追加した後に`AWS CLI V2`で追加すると発生しました。
`AWS CLI V2`からだけ操作を行っていると発生しませんでした。

AmplifyでのAuthUtilを作成する

#前提
1.`amplify add auth`コマンドで認証サービスを作成する

“`
amplify add auth

? Do you want to use the default authentication and security configuration? Default configuration
? How do you want users to be able to sign in? Username
? Do you want to configure advanced settings? No, I am done.
“`

2.`amplify push`コマンドで作成した認証サービスをAWSにデプロイし、
 AWSの`Cognito`サービスへ反映する

“`
amplify push
“`

3.`amplify console`コマンドでデプロイしたサービスを確認する

“`
amplify console
“`

#実装
“`authUtil.js
import Amplify, { Auth } from ‘aws-ampli

AWSユーザがGCPを調べてみた

## はじめに

AWSでいくつかシステムを構築している私が初めてGoogle Cloud Platform(GCP)を調査した時のメモです。

## 目次

1. AWSとGCPとの違い
2. 参考になりそうなページを見つけた

### 1. AWSとGCPとの違い

Googleが比較表を作っていたのでこちらを参考にする。

https://cloud.google.com/free/docs/aws-azure-gcp-service-comparison?hl=ja

使いそうなものを一部引用記載する。
同じような機能でも複数あったりする?

|機能名:AWS|機能名:GCP|備考|
|:–|:–|:–:|
| Amazon VPC | Cloud Router ||
|Amazon Elastic Compute Cloud(EC2)P3 | Cloud GPU||
|Amazon Elastic Compute Cloud(EC2) | Compute Engine||
|AWS 自動スケーリング|Compute Engine オートスケーラー||
|Amazon

【AWS認定試験】ANS-C00取得しました

# はじめに

先日ANS-C00を受験し、取得することができました。
ネットワークの経験はあまりありませんが取得できたので、同じような方の参考になればと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675893/51bcfd52-8310-bc48-f623-d59f742d9eb5.png)

## これまでのAWS認定受験歴
|年月|試験|点数(合格点)|合否|
|—|—|—|—|
|2020/08|AWS認定クラウドプラクティショナー(CLF)|809/1000(700)|〇|
|2020/11|AWS認定ソリューションアーキテクトアソシエイト(SAA)|753/1000(720)|〇|
|2021/01|AWS認定デベロッパーアソシエイト(DVA)|862/1000(720)|〇|
|2021/02|AWS認定SysOpsアドミニストレータアソシエイト(SOA)(C01)|731/1000(720)|〇|
|2021/04|AWS認定ソリューション

書籍2冊(AWS基礎からのネットワーク&サーバー構築、AWS超入門)のエラーまとめ:執筆中

ポートフォリオに組み込むためにAWSを学習中のものです。
本記事ではタイトルの通り、AWS基礎からのネットワーク&サーバー構築、そして、AWS超入門の二つの書籍において2022年1月現在で書籍どおりに記述してうまくいかなかった部分に焦点を当てて記事を書いていこうと思います。(2022年01月20日時点での)
この記事は
✅この2冊(もしくは片方)をやる
✅ポートフォリオ作成にあたってAWS導入を考えていてAWS入門書でありかつ割と人気な書籍である上記の書籍を取り組みたいと思っているが、初心者によくありがちな(?)エラーで先に進めないことがないようにしたい!

というような人に特に良いのではないかと思います。また、この2冊(もしくは片方)をやるにあたって躓きそうになったり、エラー解決できるがちょっとだるい(っていう気持ち結構わかりますが、)みたいに思った際にも役立つと思います。前置きが長くなりましたが内容の方にいきたいと思います。

### AWS超入門
まず自分の書籍は2019年7月初版第1刷なのですがほぼエラーもなく、公式の正誤表に沿ってやった所、問題はなかったのですが細かい部分も含

rails assets:precompile RAILS_ENV=productionでThe engine “node” is incompatible with this module. Expected version “xx.xx.x”. Got “zz.zz.z”とerrorになった時の対処方

“`package.json
“node”: “xx.xx.x”
“`
この”xx.xx.x”をエラー表示の”zz.zz.z"にバージョンを合わせると解決!

Serverless Framework × TypeScript のローカル開発環境構築メモ(S3 Local編)

[Serverless Framework × TypeScript のローカル開発環境構築メモ(Serverless Offline編)](https://qiita.com/0taUtan/items/aca988de4b0a53244950)
[Serverless Framework × TypeScript のローカル開発環境構築メモ(DynamoDB Local 編)](https://qiita.com/0taUtan/items/9fdbc791fc936d6380e5)
Serverless Framework × TypeScript のローカル開発環境構築メモ(S3 Local編)[今回]

[前回](https://qiita.com/0taUtan/items/9fdbc791fc936d6380e5)は[Serverless Framework](https://www.serverless.com)のプラグイン[Serverless Dynamodb Local](https://www.serverless.com/plugins/serverless-

AWS Step Functions メモ

## 概要

* AWSが提供するサーバーレスオーケストレーションサービス。
* 分散アプリケーション・マイクロサービスを「ステートマシン」と呼ばれる仕組みでオーケストレートする。
* 定義したステートマシンはAWS コンソールから「ワークフロー」という形式で可視化できる。

## 用語

### ステート

* 状態または一つの作業単位を表す。

### ステートマシン

* ステートからなるフロー(ワークフロー)を指す。

![step_functions_wf.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586535/dfb17d9a-2d6e-8131-1d02-2e538fdd7da8.png)

* ASL (Amazon States Language) と呼ばれるJSON 形式の言語で定義する。

* ASL例

“`json
{
“Comment”: “A Hello World example of the Amazon States Language

【AWS】LambdaからCognitoユーザーを削除する

LambdaからCognitoユーザーを削除することがあり、少し手間取ったので残しておきます。

## 前提
– **Cognitoの削除が可能なポリシーをLambdaのロールにアタッチしていること。**
– ※今回はAWS管理ポリシーの AmazonCongitoPowerUser をLambdaのロールにアタッチしています。
– LambdaのランタイムはNode.js 14.x です。

## Lambdaのコード

“`javascript:index.js
let aws = require(“aws-sdk”);

exports.handler = async (event) => {

// eventから削除するCognitoユーザーのユーザー名リストを受け取る
let userNameList = event.userNameList;

// Cognitoユーザーの無効化メソッドをコール
await disalbeCognito(userNameList);

const response = {