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

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

CodePipelineを使って静的サイトのデプロイを自動化しよう!

## はじめに
今回は、Node.js製のHexoという静的サイトジェネレーターを使ってAWSの`S3`にデプロイします。
**ちなみに`Hexo`を知らなくても問題なくデプロイできるように構成しています。**

https://hexo.io/

そのデプロイを、`CodePipeline`と`CodeBuild`を使って自動化しましょう。

## CodePipelineとは?
AWS CodePipeline は完全マネージド型の**継続的デリバリーサービス**で、リリースを自動化します。

まぁここで疑問なのは、**「継続的デリバリーサービス」**ですよね。
AWS公式サイトでは以下のように紹介されていました。
>継続的デリバリーとは、ソフトウェア開発手法の 1 つで、コード変更が発生すると、自動的に実稼働環境へのリリース準備が実行されるというものです。最新のアプリケーション開発の柱となる継続的デリバリーは、継続的インテグレーションを拡張したもので、すべてのコード変更が、ビルド段階の後にテスト環境または運用環境 (あるいはその両方) にデプロイされます。適切に実装すると、開発者

元記事を表示

spring bootのプロパティファイルの設定値をawsのparameter storeから取得する

## 概要
spring bootのプロパティファイルの設定値の一部をawsのparameter storeに移管する

## 環境
・spring boot(2.4.9)
・Java 8

## ライブラリの追加

##### 使用するライブラリ
– [spring-cloud-starter-bootstrap](https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap) (spring 2.4以降の場合のみ)
– [spring-cloud-starter-aws-parameter-store-config](https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-aws-parameter-store-config) (spring boot 2.5系は未対応)

##### build.gradleの修正
dependenciesに下記を追加

元記事を表示

【ラズベリーパイ】Raspberry Pi 3 Model b+環境を構築してみた

#はじめに
先日macOSからaws lambdaへpythonの実行環境をクラウドリフトしました。
今回はawsからオンプレのラズベリーパイ(以降ラズパイ)へクラウド回帰してみたいと思います。

理由は以下2点です。
・ラズパイを勉強したいこと
・ラズパイの消費電力が低いこと

そんなラズパイを1から構築してます。

#環境
・macOS Catalina 10.15.7
・Sanoov Raspberry Pi 3 Model b+
 購入したものはAmazonで以下になりますのでご参考ください。

#手順
####ハードウェアの準備
1.開梱します。内容物は写真の通りです。SDカード(32GB)は赤い本体の箱に入っていました。
![IMG_2739.J

元記事を表示

Terraformで FargateのBlue/Greenデプロイ環境を構築する

#はじめに
本記事では、Terraform で ECS の Fargate の環境とBlue/Green デプロイのパイプライン
([CodeCommit + CodeBuild + CodeDeploy +CodePipeline](https://aws.amazon.com/jp/devops/))をお試しで構築する手順を記載しています。

#Terraform で構築する全体構成図
![00_fargate_blue_green_deploy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/f3c5ef22-3c39-2fcf-1b84-58044b8fc64a.png)

#Terraform で構築するAWSリソースのBlackBeltの資料
[VPC](https://d1.awsstatic.com/webinars/jp/pdf/services/20201021_AWS-BlackBelt-VPC.pdf)
[ALB](https://d1.awsstatic.com/

元記事を表示

初投稿

初投稿

これからsnowflakeとawsについてシェアしていきます

元記事を表示

[AWS EC2][ubuntu] EC2インスタンスでユーザー管理する

・EC2インスタンス内に複数のユーザーを作成し、ユーザー毎に別々のsshキーペアを使ってEC2へssh接続できるようにする。
・開発者用のユーザーグループとプロジェクトディレクトリを作成し、共同作業できるようにする。

# EC2インスタンスへのssh接続

“`bash:bash
ssh -i ubuntu@ # ローカルPCからEC2インスタンスにssh接続する
“`

# ユーザーの追加、devグループの作成

“`bash:bash
sudo adduser -q –gecos “” –disabled-password # ユーザーを追加
getent passwd # ユーザーが追加されていることを確認
sudo groupadd dev # devグループを作成
sudo gpasswd -a dev # devグループにユーザーを追加
sudo visudo /etc/sudoers.d/dev # /etc/sudoer

元記事を表示

バケットポリシーでミスったこと

特定の VPC でエンドポイントを作成した後、S3 のバケットポリシーで特定の VPC からのアクセスのみ許可する設定として以下を実施した。
が、設定が不足していたため、AWS マネジメントコンソールからもアクセスできなくなってしまった。

“`bash
{
“Version”: “2012-10-17”,
“Id”: “PolicyDemo”,
“Statement”: [
{
“Sid”: “Allow-from-specific-only”,
“Effect”: “Deny”,
“Principal”: “*”,
“Action”: “s3:*”,
“Resource”: [
“arn:aws:s3:::S3バケット名”,
“arn:aws:s3:::S3バケット名/*”
],
“Condition”: {
“StringNotEquals”: {
“aws:sourceVpc”: “VPC ID”

元記事を表示

CloudWatch logsをgolangで操作してみる

# CloudWatch logsをgolangで操作するには?

CloudWatchはかなりAWSの中でもかなり便利なサービスで大好きなんですが、いかんせんSDKにクセがあるので、
自分用のメモがてらラッパーライブラリを実装してみました。

## 作った機能

業務で使っている限り、大部分の時間は`Logs Insight`で検索したりしているのですが、
これが結構もっさりしてたり、そもそもコンソール開くのが煩わしいので、CLI化したい、というのがモチベーションでした。

ただ、APを新規で作っているときはメッセージ保存とかも当然やるので、必要そうな機能は実装しました。

1. LogGroup
1. LogGroup一覧を返す
1. メッセージ検索
1. LogStream
1. 新規作成
1. LogStream一覧を返す
1. LogEvent
1. 新規作成
1. 保存

## リポジトリ

https://gitlab.com/kuritayu/logs

## install

`go get gitlab.com/kur

元記事を表示

【AWS】LINE bot RSS受信用 Terraform

LINE bot RSS受信用 Terraform

“`tf
## AWS Config ##
terraform {
required_providers {
aws = {
source = “hashicorp/aws”
version = “>= 3.21.0”
}
}
}

variable “aws_region” {
default = “ap-northeast-1”
}
variable “aws_profile” {
# type = string
default = “aws-demo”
}
provider “aws” {
region = var.aws_region
profile = var.aws_profile
}

# Lambda設置用のVPCを設置
resource “aws_vpc” “lamda_vpc” {
cidr_block = “10.0.0.0/16”
instance_tenancy = “default”
enab

元記事を表示

Amazon S3 Access Pointとは

### Amazon S3 Access Pointについて備忘録
9/13の[週刊AWS](https://aws.amazon.com/jp/blogs/news/aws-weekly-20210913/)のアップデートにて、
>Amazon S3 Access PointでAmazon CloudWatchのリクエストメトリクスを利用可能に

という内容がありましたがそもそも**Amazon S3 Access Point**って何?となったので調査内容を備忘録として残します。

結論として、現状自身の担当する案件には大規模なものが無いため使用する機会はありませんが、今後必要となってくる知識だと感じてます。

#### Amazon S3 Access Pointとは
>**S3に保存した共有データセットへのアクセス管理が簡単**
S3 の機能である Amazon S3 Access Points は、S3 にデータを保存するあらゆる AWS のサービスやお客様のアプリケーションのデータアクセスを簡素化します。S3 Access Points では、お客様はアクセスポイントごとに

元記事を表示

EC2インスタンス起動時にスクリプトを実行する方法

新しくEC2インスタンス起動した後は初期設定をすると思います。
もし毎回同じコマンドを実行するのが面倒な場合は、自動でスクリプトを実行させることができます。
「ユーザーデータ」というものを使えば良いです。その使い方を説明します。

# 1. スクリプトを作成する

初期設定のコマンドを実行するスクリプトを作成します。
今回は例としてwebサーバを立ててみます。

“`bash
#!/bin/bash
apt update
apt install apache2 -y
echo ‘hello world’ > /var/www/html/index.html
“`

ユーザーデータのスクリプトはroot権限で実行されるため、`sudo`等は必要ありません。

# 2. ユーザーデータとしてスクリプトを登録する

先ほど作成したファイルをユーザーデータとして登録しましょう。
以下のキャプチャにあるように、EC2インスタンス作成時に登録できます。

![2-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

【AWS】ses send_emailでメール転送マンの作り方(メールエンコード参考用)【Amazon SES】

# 事の発端

**メールをよォ〜〜〜**
**”みんな”で受信してェんだよォ〜〜〜**
**”メールアプリでSMTP認証して返信”してェんだよ〜〜〜**

お好みのソリューション(GoogleWorkspacesとか)で
エイリアスを噛ますほうが100万倍楽なのは承知済み。
諸事情のおかげで作り込むことになりました。

# 結論
~~SES+WorkMailのほうが運用コスト低いッスわ~~
不特定多数のメールアドレスからSESで受信して、Lambda+SESで不特定多数にメール転送
**aws ses send_mail API**でイイ感じに転送することができるようになりました。

#概要

1. どこかの誰かが送ったメールをSESで受信する
1. SESは受信イベントをS3とLambdaに通知・保存する
1. LambdaはS3からメールファイルを拾って、SESで転送する

#材料
##メール送信系API

sesには次のAPIがあります。

* send_mail
* send_raw_mail

###それぞれの違い

添付の有無。おわり(多分)
send_raw_mai

元記事を表示

AWS Transit Gatewayを使用した通信制御をやってみた①

#AWS Transit Gatewayとは?
VPCやオンプレミスを行き来するルートを一か所に集約できるサービスです。(たぶん)
詳しくは公式のドキュメントを見てください。
→[AWS Transit Gateway(VPC およびアカウント接続を簡単にスケール)| AWS](https://aws.amazon.com/jp/transit-gateway/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc)

#概要と全体構成図
AWS Transit Gateway(以下:TGW)を使用して、
① VPC(test-a) → TGW → VPC(test-palo) → インターネット
② VPC(test-a) → TGW → VPC(test-palo) →TGW → VPC(test-b)(VPC間通信)
という2つの通信をやってみました。
※インターネットに抜けるときも、VPC間通信するときも、FW(PaloAlto VM)を通過させます。

元記事を表示

AWSでAIサービスを使ってみる〜第11回Personalize編〜

##Personalizeとは
>personalizeはレコメンデーション機能です。過去の購入履歴から顧客の好みを分析して顧客に気に入ってもらえそうな品物を提案します。

personalizeは次のように使います
①データの登録
・購入履歴等のデータをデータセット”と言います。

②ソリューションの構築
・データセットを用いた機械学習を行い、レコメンデーションを作成するための仕組みをを”ソリューション”と言います。

③キャンペーンの作成
・レコメンデーションを取得するために、ソリューションを公開します。ソリューションを公開する仕組みのことを”キャンペーン”と言います。

④レコメンデーションの取得
キャンペーンを使って、指定したユーザに対するレコメンデーションを取得します。

#####それでは実際にレコメンデーション機能を試してみましょう!

##使用するデータを前準備する
データの準備を行います。今回personalizeに必要なデータとして”購入履歴のデータ”と商品名を表示するために”アイテムのテキストファイル”用意します。

まず、購入履歴のデータを作成します。
(購入履

元記事を表示

Amazon SageMaker ノートブックインスタンスの地味だけど便利な機能

# はじめに

Amazon SageMaker を使うと、自分のマシンの環境を汚さずに機械学習に関するあれこれを試せるので便利です。今回は、Amazon SageMaker のノートブックインスタンスのちょっとした機能をご紹介します。

# まずはノートブックインスタンスの起動

ノートブックを起動しなければ話は始まりません。しかし、ノートブックの設定にも隠れた便利機能があるのです。

まずは AWS コンソールから SageMaker のコンソールに移動します。

![スクリーンショット 2021-09-22 18.23.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315319/1f4956c1-f9d8-41a7-c2f9-453f010a8ae8.png)

## ライフサイクル設定

SageMaker のコンソールの左側のメニューから「ノートブック」をクリックして展開します。はい、ここで「ライフサイクル設定」が表示されました。

![スクリーンショット 2021-09-22 18.2

元記事を表示

既存のサーバを Terraform で管理できるようにする

Terraform で既存の AWS リソースを管理できるようにします。

#Terraform で管理するリソースの確認

今回は以下の通り
– VPC
– subnet
– SecurityGroup
– Key Pair
– Elastic IP Address
– EC2

#下準備
IAM ユーザーのアクセスキーを設定し、リソースへアクセスできるようにした準備を行います。
まず direnv をインストールします、以下の記事が参考になります。

https://qiita.com/kompiro/items/5fc46089247a56243a62

direnv のインストールが完了したら、“.envrc“ファイルを作成します。

“`go:.envrc
export AWS_ACCESS_KEY_ID = “{アクセスキーId}”
export AWS_SECRET_ACCESS_KEY=”{シークレットアクセスキー}”
“`

これで、“.envrc“以下の階層に入ると自動的に認証情報が適用されリソースへのアクセスが可能になります。

#テンプレートの作成

元記事を表示

Kinesis Data Firehoseの動的パーティショニングを試してみる

## やりたいこと

– Kinesis Data Firehose(以下Firehose)の新機能、[動的パーティショニング](https://aws.amazon.com/jp/about-aws/whats-new/2021/08/introducing-dynamic-partitioning-amazon-kinesis-data-firehose/)を試したい。
– ついでに、サブ機能である改行追加機能(new line delimiter)も試しておきたい。

## 環境

– データにはRoute 53 Resolverログを使う。
– Resolverログはスキーマがシンプルで、かつFirehoseに直接投入できるのでテストに好適。
– ほんとはCloudWatch Logsをデータソースとしてあれこれ試したいが、Logsを介したログはメタデータで覆われてる上にBASE64エンコード・GZ圧縮されてるので、[前段に結局Lambdaが必要になる](https://docs.aws.amazon.com/firehose/latest/dev/dynami

元記事を表示

【ElastiCache】RBAC(Role-Based Access Control)が有効なRedisClusterにJedisで接続する

RBAC(Role-Based Access Control)が有効になっているElastiCache RedisClusterに、EC2で動作するアプリケーションから、JavaのRedisクライアントライブラリであるJedisを使って接続する。

## 前提

– 『Authenticating users with Role-Based Access Control (RBAC) 』(https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.RBAC.html) に従ってRedisClusterが作成されている
– アプリケーションの動作するEC2から、RedisClusterへネットワーク設定的にアクセス可能である
– `openssl s_client -connect エンドポイント:6379 -quiet` 等のコマンドで確認できる
– 認証するユーザーのアクセス文字列に `+cluster` と `+ping` が設定されている
– `+ping` は設定しなくても繋がるが、設定してお

元記事を表示

DynamoDBの基本的な操作備忘録(AWS SDK for Ruby版)

# 扱える型

### スカラー型

– 数値
– BigDecimal型で返されるため、必要に応じて`to_i`メソッドでInteger型に直す
– 文字列
– バイナリ
– ブール
– `null`

### ドキュメント型

– リスト
– 複数の型を要素に持つことができる
– マップ

### セット型

ユニークで順序の保証されないリスト

– 数値セット
– 文字列セット
– バイナリセット

# データ取得

– `scan`
– テーブルのすべての項目を取得する
– 全てのカラムを条件に使用可能
– `query`
– パーティションキーの指定が必須
– ソートキーを指定しない場合、条件に合致する全てのレコードが返される
– `get_item`
– 1件に絞ってレコードを取得

### `filter_expression`

– 取得したデータに対し、結果セットを返す前に返すレコードを絞り込む条件を記述する
– 例:`filter_expression: ‘Age > :age’,` ※ `:age`

元記事を表示

Copy data from AWS S3 to Oracle Cloud Object Storage using rclone

# Introduction

Can I copy my data from AWS S3 or Azure Blob to OCI Object Storage? The answer is YES. There many ways to complete this task. With the help of rclone, this task can be done very easily.

[Rclone](https://rclone.org/) is a command line program to manage files on cloud storage. Many cloud vendors are supported, such as Oracle Cloud Object Storage, AWS S3, Azure Blob, Google Cloud Storage and etc. You can easily transfer data betwe

元記事を表示

OTHERカテゴリの最新記事