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

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

CloudFormationを使ってS3にバケットを作成してみた

## はじめに

業務でAWSに環境を作ることが多く、効率よく構築できるようCloud Formationを使って
構築を行ってみました。

##CloudFormationとは
CloudFormationとはテンプレートファイル(JSONまたはYAML)を使用してAWSリソースを自動で構築できるサービスです。
テンプレートファイルを作成していれば同様の環境を構築する際の時間を削減することができます。

## 作成する環境
今回はS3のバケットを作成するテンプレートを実行してみる

## テンプレートの作成

“`storage.yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Description: buckets for storing.
Metadata:
‘AWS::CloudFormation::Interface’:
ParameterGroups:
– Label:
default: ‘Storage’
Parameters:
– BucketName
#スタック作成

元記事を表示

gasからAWSのV4署名を作成して、APIでSESからメールを送信する

Google SpreadSheetのgasからAWSのV4署名を作成して、APIでSESから別ドメインのメールを送信する。
少しニッチなニーズ(死語)ですがドキュメントオーナーのgmailアドレスに依存しない形になるので、可用性は高まります。
セキュリティ、メールに関する知識が足りないので、足りない部分はコメント頂けると幸いです。

https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-email-api.html
(参考:公式 Amazon SES API を使用して E メールを送信する)

>直接 HTTPS リクエストを作成する – これは、リクエストの認証と署名を手動で処理し、リクエストを手動で作成する必要があるため、最も高度な方法です。リクエストの実行方法の詳細については、「Amazon SES API の使用」を参照してください。

最も高度な方法……
本稿では、gas内でAWSのV4署名を作成して、その署名を使用して、APIを叩いて、メールを送信するまで、です。GETのみ、POSTもできるよう

元記事を表示

S3 バッチオペレーションを利用してオブジェクトACLを一括に変更する

#やりたいこと#
ここでは、S3バッチオペレーションを使用して、マニフェストファイルに記載されたオブジェクトのACLを纏めて設定します。
マニフェストファイルはイベントリから取得します。

#イベントリ設定の作成#

対象のS3バケットの「管理」タブより、「イベントリ設定の作成」をクリック。
![スクリーンショット 2021-09-10 18.51.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/1ca3ee74-d43d-b8d2-d10f-2b87f0afd800.png)

「インベントリ設定名」を入力します。
![スクリーンショット 2021-09-10 18.56.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/5208c969-38b2-aae6-1c10-e9894406a0e1.png)

「プレフィックス」でイベントリを制限します。
※今回は、CloudTrailの

元記事を表示

EC2にadminerを入れる手順

#はじめに
題名通りで、EC2にDB管理ツールのAdminerを設置します。

#前提
・EC2とRDSを事前に設置
インターネットゲートウェイやサブネットも作成済み
[こちらを参考にしました](https://qiita.com/MayForBlue/items/c96674fb6aac5852a978)
・RDSはMYSQL
・EC2のインバウンドのセキュリティーグループはこちらの設定にしてください。

#流れ
①EC2にapacheをインストール
②PHPとM

元記事を表示

【AWS CloudFormation】CAPABILITY_IAM と CAPABILITY_NAMED_IAM どう使い分けたら良いのか

# 概要
AWS CLI を用いて、CloudFormation のスタックを作成する時に、
Capabilities を要求される場面があるかと思います。

その時に、`CAPABILITY_IAM` と `CAPABILITY_NAMED_IAM` どっちでも通るけどどっち使えばいいんだ?ってなることがあったので、公式リファレンスの自分の理解をこの場にまとめます。

# そもそもどういう場合にCapabilitiesが必要になるのか
作成する CloudFormation のスタックの中のリソースに IAM リソースがある場合です。

>AWS CloudFormationがスタックを作成するために、スタックテンプレートに特定の機能が含まれていることを明示的に確認する必要があります。
参考: https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html

AWS のドキュメントにもある通り、CloudFormation がスタックを作成するために、特定の機能が含まれている

元記事を表示

FluentdでEC2からS3へログを転送

## これは何

FluentdでEC2からS3へログを転送したので、設定ファイルの書き方など書き残しました。

“`
要件
Amazon Linux 2
td-agent4
old stableだし、3でもよかったけど、なんとなく4を選択
“`

他にこの件で書かれている方がすでにいらっしゃって、参考にさせていただきました。
自分はハマったポイントが何点かあったので、そちらも含めてまとめます。

“`
・S3 credentials
・configファイル設定で、もともとあるmatch directiveを削除しなければならなかった。
“`

## やってみた

**S3 credentials用意**

“`
/// S3 credentials用意
IAMロール設定。EC2へアタッチ。
という方法だと、credentialsのエラーが出て進まなかったので、AmazonS3FullAccessを与えたIAMユーザーのAccess key,Secret keyを利用。
“`

**httpd install**

“`
yum install httpd
systemc

元記事を表示

AWS Amplifyで既存のCognito User Pool / DynamoDBをimportする方法

# はじめに
今回、開発未経験の私がAWSのAmplifyを使いユーザーの検索を行うアプリを作りました。
そこで、既に作成されているCognitoからUserPoolをimportしてユーザー情報を取得する方法と、
既に作成されているDynamoDBから取得したいテーブルをimportして情報を取得する方法を、今後も扱うことがあると思いますので、メモとして残しておこうと思います。
また、右も左も分からない手探りな状態で進めているので、もしやっている事とその意味が違った場合は、教えていただけたら幸いです。

## 作成されているCognitoのUserPoolをimportする方法
私は、CognitoのUserPoolからユーザー情報を取得して、名前が存在した場合は表示させる機能を実践したのでそれを軸に書いていきます。

### 1: 自分以外のユーザー情報を取得するには`aws-sdk`をまずimportして使う必要がある。
### 2: aws-sdkのドキュメントで取得する方法を探す。それらしい処理を書いてみる。(この際はテスト的に書くため別ファイルを作り検証する)

“`ja

元記事を表示

AWS Lambdaで使いたい環境変数をAWS SAM CLIでどうするか

##はじめに
環境変数の扱いについて、戸惑いがありましたのでまとめます。
用途や仕様の背景が理解し切れて一ませんが、少なくとも現状はベストエフォートとは思えず、改善が進むと嬉しいです。

##やっていたことの概要
– 言語:Rust(記事としては、Rustに依存する内容ではないです)
– 作っていたもの:AWS Lambda関数
– 動作確認の方法:後述(※)
– デプロイの方法:AWS SAM CLI(`sam deploy`)
– その他:AWSの設定はCloudDormation(`template.yaml`)に集約

#####※動作確認の方法
AWS SAMを使うとローカルでLambda関数の動作確認が可能ですが、私の環境ではビルドが遅くデプロイ直前までは、`cargo run`で動作確認を行っていました。

| 動作確認タイミング | 動作確認の例 | 動作確認環境 |
| —- | —- | —- |
| 開発時 | `cargo run`, `cargo test` | MacOS |
| デプロイ前検証 | `sam loc

元記事を表示

AWS 使い捨て Linux

ちょこっと EC2 を作って使い捨てしたい時のメモ。

## SSH key pair の作成

鍵を作る

export AWS_PROFILE=exampleprofile
aws ec2 create-key-pair –key-name trash –query ‘KeyMaterial’ –output text > trash.pem
chmod 400 trash.pem

## CloudFormation ファイルを作る

trash.yaml という名前のファイルを作る。

“`yaml
AWSTemplateFormatVersion: “2010-09-09”
Resources:
Trash:
Type: AWS::EC2::Instance
Properties:
InstanceType: t3.micro # インスタンスの種類
ImageId: ami-02892a4ea9bfa2192 # Amazon Linux 2 64-bit x86
KeyName: tr

元記事を表示

Windows10/WSL2からAWS/S3にファイルをAWS/CLIアップロード

# バケットの作成&アップロード

“`bash
aws s3 mb s3://yono2844
aws s3 ls s3://yono2844
DATE=`date “+%Y%m%d%H%M%S”`
mkdir ${DATE}
touch `seq -f ${DATE}/%03g.csv 1 99`
aws s3 cp ${DATE} s3://yono2844/ –recursive
aws s3 ls s3://yono2844/${DATE}
“`

# バケットの削除

“`bash
$ aws s3 rb s3://yono2844 –force
“`

元記事を表示

WINDOWS10/WSL2にAWS/CLIをインストール&設定

# インストール

“`bash
$ curl “https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip” -o “awscliv2.zip”
$ unzip awscliv2.zip
$ sudo ./aws/install
“`

# 設定

“`bash
$ aws configure
AWS Access Key ID [None]: XXXXXXXXXX
AWS Secret Access Key [None]: YYYYYYYYYY
Default region name [None]: ap-northeast-1
Default output format [None]: json
“`

AWS Access Key IDとAWS Secret Access KeyはIAMユーザで確認。

# 確認

“`bash
$ aws –version
aws-cli/2.2.42 Python/3.8.8 Linux/4.4.0-19041-Microsoft exe/x86_64.ubuntu.20 p

元記事を表示

【AWS】PythonでAppSync(GraphQL)を叩く

#やりたいこと

とりあえずAppSync上にGraphQL APIは構築したが、まずはローカルで試してみたいorデータを一括登録したいという場合があると思いますので、boto3を使ってローカル環境でAPIを叩けるようなコードを作成しました。
ぜひ、ご活用ください。

#ソースコード

“`python
from requests_aws4auth import AWS4Auth
from gql import gql, Client
from gql.transport.requests import RequestsHTTPTransport
import pprint
import openpyxl
import sys
import json
import random
args = sys.argv

#一時的な利用なのでソースコード内に記述していますが、なるべく環境変数にしましょう。※補足参照
auth = AWS4Auth(
“アクセスキー”,
“シークレットアクセスキー”,
“リージョン”,
“appsync”,
)
headers =

元記事を表示

【AWS】PythonでExcelからDynamoDBへデータを一括登録する

#やりたいこと

以下のようなエクセルのデータをDynamoDBにpythonを使って一括登録していきます。
![スクリーンショット 2021-09-30 15.29.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/726987/db3e6dad-98eb-b864-9ec8-7296b4ff45e8.png)

#プログラム

AWSのライブラリ(boto3)とopenpyxlを使います。

“`python
import boto3
import json
import openpyxl
import datetime
import uuid

dynamodb = boto3.resource(‘dynamodb’)
table = dynamodb.Table(“Demo-table”)
dt_now = datetime.datetime.now()

print(dt_now)
wb = openpyxl.load_workbook(“サンプルデータ.xlsx”)

#シート名
ws

元記事を表示

【AWS】VPCを定義したものとは別のスタックでEC2を構築する【CloudFormation】

# すなわち、クロススタック参照のやり方

## 経緯
VPC, サブネット, ルートテーブル など、ネットワーク関係のスタックと
EC2インスタンスのスタックを分けたい
が、EC2インスタンスではサブネットを指定しないといけない
そんな時にクロススタック参照が使える

## 使い方概要

参照される側(今回はSubnet)のテンプレートで、`Output:`を追加する
参照する側(今回はEC2)のテンプレートで`ImportValue`で値を取得する

## 用意するもの

– [前回](https://qiita.com/c0ba1t_coke/items/be7c85b2b5def746778b)VPCを作成したテンプレート(Yaml)
– EC2作成用のテンプレートファイル(空,Yaml)

## やってみた

[参考](https://dev.classmethod.jp/articles/cfn-cross-stack-reference/)

### 1. VPC側のテンプレートでOutputを設定する

“`yaml:vpc.yaml
Resoueces:

##

元記事を表示

AWS日記31 (CloudTrail)

# はじめに
今回は [AWS CloudTrail](https://aws.amazon.com/jp/cloudtrail/) を試します。
アカウントアクティビティのログを記録し、[Amazon SNS](https://aws.amazon.com/jp/sns/)を組み合わせて通知するよう設定します。

# 設定
今回は CloudFormation を利用し、設定しました。
使用したテンプレートは[Github](https://github.com/tanaka-takurou/cloud-formation-templates/blob/master/cloudtrail_sample/template.yml)に。

# AWS SAM テンプレート作成

AWS SAM テンプレートで S3, SNS, CloudTrail の設定をします。

[参考資料]
[AWS SAM テンプレートを作成する](https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/tutorial-lambda-sa

元記事を表示

terraformでcloudfrontにAlarmを設定する

今回はterraformでCloudFrontにAlarmを設定してみます。
対象として、[前回の記事](https://qiita.com/Lycaony/items/3d7a800073ba8f5e0b7d)で作成したCloudFront+S3の環境に対して設定してみます。

#providerのaliasの設定
今回CloudFrontにAlarmを設定しますが、注意点としてCloudFrontのメトリクスは”us-east-1″のリージョンにしか送信されません。
このため、Alarmやその送信先のSNS Topicについてもus-east-1で作成を行う必要があります。

terraformではaliasのパラメータを付けることで、別の設定を持つProviderを設定できるのでus-east-1のProviderを作成しておきます。

“`tf
provider “aws” {
alias = “global”
access_key = var.aws_access_key
secret_key = var.aws_secret_key
region

元記事を表示

爆速でモックAPIを構築する

AWS Chalice を使って爆速でモックAPIを作ってみました。

AWS Chalice は Python 製のフレームワークで API Gateway と Lambda をサクッと構築できます。(詳細は[公式](https://aws.github.io/chalice/index)を参照ください。)

### 構成

構築する環境はAPI Gateway + Lambdaとなります。

![composition.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167819/7fb64117-dfd2-937f-800d-f705428feb73.png)

今回は以下前提にて構築します。

– pythonインストール済み
– Lambdaに付与するロールは事前作成済み(ロールの自動生成は使わない)
– AWS CLIの設定済み

### 構築
何はともあれ作っていきます。

1. chalice インストール

“`
pip install chalice

元記事を表示

AWS Dev Day Online Japanを視聴したので、その記録

https://aws.amazon.com/jp/about-aws/events/2021/devday/

AWS Dev Day の 9/28, 29 の資料寄せ集めです。ちょっとしたメモだったりが混ざっており、ごった煮です。

## Day2 General Session

### Customer Obsession
https://www.amazon.co.jp/b?ie=UTF8&node=4967768051

### PR FAQs for Product Documents
https://medium.com/agileinsider/press-releases-for-product-managers-everything-you-need-to-know-942485961e31

### Weekly Business Review
https://medium.com/@samirlakhani/things-i-lik

元記事を表示

Cloud9で利用しているEC2の空き容量不足を解決する

### 背景

Cloud9でEC2環境を立ち上げAWS CDKでAWSリソースをデプロイしようと試していたところ、以下のようなエラーが。

“`shell
$ yarn cdk list

# (略)
latest: Pulling from xxxxxxx
xxxxxxxxxxxx: Extracting [==================================================>] 507.2MB/507.2MB
failed to register layer: Error processing tar file(exit status 1): write /usr/bin/xxx : no space left on device
“`

どうやら環境にアタッチされたボリュームの空き容量が足りないとのことです。
この時選択していたEC2のインスタンスタイプは `t2.micro` でしたが、インスタンスタイプを変更してもアタッチされるEBSのボリューム(10GiB)は変わりませんでした。

### 解決

調べたところ、Cloud9のEC2にア

元記事を表示

PCIDSS関連の記事

https://dev.classmethod.jp/articles/fin-jaws-13-report/

https://dev.classmethod.jp/articles/pci-dss-compliance-on-aws/

https://dev.classmethod.jp/articles/pcidss_aws_azure/

https://dev.classmethod.jp/articles/pci-dss-auth-by-iam/

https://dev.classmethod.jp/articles/security-hub-launches-security-checks-aligned-to-the-pcidss/

https://dev.classmethod.jp/articles/security-engineering-on-aws-links/

https://dev.classmethod.jp/articles/aws-security-operation-with-guardduty-2021/

http

元記事を表示

OTHERカテゴリの最新記事