- 1. AWS S3ライフサイクルによるObject削除
- 2. AWS CDK(ver.2)PythonでS3の署名付きURLを取得する構成を実装してみました
- 3. 【S3 Kotlin】オブジェクトのダウンロードと並行して暗号化または復号を行う
- 4. API GatewayにWAFを配置してIP制限を実施する
- 5. AWS Verified Access を使ってのプライベートなアクセス
- 6. AWSの使用はどういう時に料金がかかるのか
- 7. [Pluralith]Terraformコードから構成図/アーキテクチャを作成する
- 8. TerraformでAWS Provider Versionが低くて困った話
- 9. 【10分で確認】AWSでやりがちなセキュリティ脆弱性を生み出す凡ミス集
- 10. [AWS Q&A 365][Fargate]AWSのよくある問題の毎日5選 #91
- 11. [AWS Q&A 365][Fargate]Daily Five Common Questions #91
- 12. CapistranoでAWS EC2にデプロイする際に、`bundle lock –add-platform x86_64-linux` and try again.で詰まった
- 13. S3 GlacierのデータをAthenaでクエリしてみた
- 14. 【初心者向け】AWSは怖くない!これだけ読めばAWSのアーキテクチャ図がわかるようになる〜後編〜
- 15. ALB から S3 にアクセス(CDKのコード付き)
- 16. AWS認定デベロッパーアソシエイト(DVA-C02) 合格体験記
- 17. #7 作成したAMIから2つ目のEC2インスタンスを起動する
- 18. #6 AWS CLIでAMIを作成する
- 19. 【Terraform】AWS IAM構築用のmoduleを作成してみた
- 20. #4 AWS CLIでELBを作成する
AWS S3ライフサイクルによるObject削除
# AWS S3ライフサイクルによるObject削除
特定のオブジェクトをFilterで削除するための方法をJava, Go, C#で残しておく。
## Java
以下はJavaを使用してAWS S3にファイルをアップロードする際にTTLを付与する方法。
### ライフサイクル設定のコード
“`java
import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;public class S3FileUploadExample {
public static void main(String[] args) {
String bucke
AWS CDK(ver.2)PythonでS3の署名付きURLを取得する構成を実装してみました
AWS CDKを使ってS3の署名付きURLを取得するAPIを実装してみました。今回はアップロードとダウンロードの2パターンの署名付きURLを作成するAPIを実装しています。
署名付きURLについては、他の方が詳しく書かれていますので、そちらを参照ください。
[署名付き URLってなんだろ?](https://zenn.dev/mn87/articles/b447f9f4b11f7b)全コードはGithubを参照してください。
[Githubはここ](https://github.com/ShinyaT1994/presigned-test.git)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660703/714f6bd2-116d-ce29-b8f9-ab053083de0b.png)
## 前提条件
– AWS CDK v.2 がインストールされていること
– Python 3.x がインストールされていること
– AWSアカウントがあり、AWS CLIが設定されている
【S3 Kotlin】オブジェクトのダウンロードと並行して暗号化または復号を行う
KotlinのInputStreamとuse関数を使用して、S3からオブジェクトをダウンロード**しながら**暗号化または復号を行う
# ストリーム処理のメリット
### メモリ効率
オブジェクトの取得と暗号化を並行して行うことで、全体をメモリにロードすることなく処理することができるため、メモリ使用量が抑えられる。
### パフォーマンス
取得と暗号化を並行して行うことで、I/O待ちの時間を短縮させることが期待できる。
### エラー処理
use関数は、処理の完了時やエラー発生時に自動的にリソースを解放するため、例外が発生した場合でも適切なリソースの解放が行われ、リソースリークを防止できる。
# 実装
– S3クライアントは、`S3Client`を使用する
– `S3Client`は「AWS SDK for Java 2.x」で使用可能
– 暗号化と復号には、`AWS Encryption SDK`を使用する“`kotlin
val s3Client = S3Client.builder()
.region(Region.AP_NORTHEAST
API GatewayにWAFを配置してIP制限を実施する
## はじめに
既存の構成にAWS WAFを追加してIP制限を実施しました。WAFはCloudFrontやALBと組み合わせて使われることも多いと思いますが、今回はAPI Gatewayの前段に配置する構成を試してみました。
以下の赤枠の部分です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484097/8eeaf1e4-f413-7ea3-05f5-7158d8fc5641.png)
その他の構築については、以下の記事などで記載しているのでもし興味があればどうぞ。↓https://qiita.com/kennyQiita/items/b5d4549cb61899d52091
以下の順序でWAFを作成していきます。
1. IP Setの作成
1. WEB ACLの作成## IP Setsの作成
今回はIPリストを作成しホワイトリスト方式でIPアクセス制限を実施する検証をしました。手順2のWEB ACLの作成画面にて対象のIPリストを選択するステップがあるため、先にIP Se
AWS Verified Access を使ってのプライベートなアクセス
# ゼロトラスト
– AWS Verified Access はゼロトラストの基本原則に基づいて構築されています。
– ゼロトラストとは 社内外のネットワーク環境における、従来の「境界」の概念を捨て去り、守るべき情報資産にアクセスするものはすべて信用せずにその安全性を検証することで、情報資産への脅威を防ぐという、セキュリティの新しい考え方。# AWS Verified Access とは?
– VPN を使用することなく、アプリケーションへのセキュアなアクセスを提供するサービスです。
– アプリケーションを Verified Access に追加する前は、アプリケーションにはプライベートネットワーク経由でしかアクセスできませんでしたが、特定のユーザーが VPN を使用せずにインターネット経由で同じアプリケーションにアクセスできるようになります。# 料金
– Verified Access に関連付けしたアプリケーションごとの時間単位の課金
– 処理されたデータに対して GB 単位での料金https://aws.amazon.com/jp/verified-access
AWSの使用はどういう時に料金がかかるのか
:::note
目次
1. [はじめに](#はじめに)
2. [AWS料金の基本](#AWS料金の基本)
3. [EC2 (仮想サーバー)](#EC2 (仮想サーバー))
4. [S3 (オブジェクトストレージ)](#S3 (オブジェクトストレージ))
5. [RDS (リレーショナルデータベースサービス)](#RDS (リレーショナルデータベースサービス))
:::# はじめに
インフラを構築する際にはAWSを使う機会も
多くなるのではないかと思います:point_up:しかしながら、学習をしていく中で
AWSに触れ始めた段階だとAWSに料金が
かかることがあるのは知っていても、
具体的にどこで料金がかかるのか分からず
不安もあると思います。ですので、AWSの料金について整理したいと思います。
– **どのサービスにお金がかかるのか**
– **具体的にどんなときにお金がかかるのか**という視点で見ていきたいと思います:raised_hands:
# AWS料金の基本
まずAWSの料金体系についてです。
**AWSでは主に「従量課金制」が採用されています
[Pluralith]Terraformコードから構成図/アーキテクチャを作成する
# はじめに
Terrafomのコードから構成図を作成してくれる`Pluralith`というもおがあったので使用感などを検証してみる## 公式ページ
https://www.pluralith.com
## 公式ドキュメント
https://docs.pluralith.com/docs/category/get-started# 料金
– `Local Setup`であれば無料
– `CI Setup`は実行した回数によって課金
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124991/b51b881b-913e-e30d-225c-60afbc475d0d.png)公式ページの料金
https://www.pluralith.com
# 操作方法
## ユーザー登録
Pluralithの画面にてユーザー登録を行う
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1249
TerraformでAWS Provider Versionが低くて困った話
## この記事は何?
Terraformでコード管理しているAWS環境にて、Aurora Serverlessのリソースを追加作成しようとした際に遭遇したエラーとその対応メモ。## Terraform環境
“`terminal
$ terraform –version
Terraform v0.12.29
+ provider.aws v3.37.0
“`## 経緯
AuroraServerlessのコーディング後、planはOKだったため、問題ないと思ったが、applyするとエラーに遭遇した。serverlessv2_scaling_configurationはサポートされていないとのこと。“`terminal
│ Error: Unsupported block type
│
│ on rds.tf line 115, in resource “aws_rds_cluster” “serverless-stg-db-cluster”:
│ 115: serverlessv2_scaling_configuration {
│
│ Blocks of
【10分で確認】AWSでやりがちなセキュリティ脆弱性を生み出す凡ミス集
# AWS運用担当者が意外とやりがちなセキュリティの脆弱性
AWSを実務で触られている方で「セキュリティ対策はばっちしだ?」と言い切れる人はどれくらいいるでしょうか。特に創業間もないベンチャー企業や内製化直後のエンジニア組織の場合、サービスローンチや追加機能開発がビジネス上の最優先事項になってしまい、セキュリティ対策などの非機能要件のレビュー、設定などは後回しにされがちです。
そこで今回は、”時間がない人”でも注意したいセキュリティ脆弱性を生みやすい設定や設計の凡ミス集をまとめてみました。
## IAM ポリシーの広すぎる権限
IAMポリシーに適切でない広い範囲の権限を付与すると、権限の乱用やデータ漏洩につながる可能性が高まります。例えば、読み取り専用ユーザーに書き込み権限を付与するといった状況が該当します。IAMポリシーを作成する際は、最小権限原則に基づいて、必要最低限の権限を持つポリシーを適用しましょう。## IAMの秘密アクセスキーを共有または適切に管理しない
秘密アクセスキーの共有や不適切な管理は、セキュリティ侵害を招く原因です。アクセスキーは個人ごとに発行し、定期的
[AWS Q&A 365][Fargate]AWSのよくある問題の毎日5選 #91
# 1. Amazon ECS User Guide for AWS Fargateにおけるタスク定義とは何ですか?
答え:タスク定義とは、Amazon ECSのタスクの一部として実行されるコンテナの設計図です。コンテナイメージ、CPUおよびメモリ要件、ネットワーキング、ログ記録の設定など、さまざまなパラメータを定義します。# 2. Amazon ECS User Guide for AWS Fargateにおけるタスク定義の異なる状態とは何ですか?
答え:Amazon ECS User Guide for AWS Fargateにおけるタスク定義の異なる状態とは、ACTIVE、INACTIVE、および RETIREDです。# 3. Amazon ECS User Guide for AWS FargateにおけるFargateタスク定義の考慮事項は何ですか?
答え:Amazon ECS User Guide for AWS FargateにおけるFargateタスク定義の考慮事項には、ネットワークモード、タスクCPUとメモリ、ログ記録、IAMロール、タスクストレージ、アプリケ
[AWS Q&A 365][Fargate]Daily Five Common Questions #91
# 1. What are task definitions in Amazon ECS User Guide for AWS Fargate?
Answer: Task definitions are a blueprint for the containers that run as part of a task in Amazon ECS. They define various parameters such as the container image, CPU and memory requirements, networking, and logging configuration.# 2. What are the different states of a task definition in Amazon ECS User Guide for AWS Fargate?
Answer: The different states of a task definition in Amazon ECS User Guide for AWS Fargate are
CapistranoでAWS EC2にデプロイする際に、`bundle lock –add-platform x86_64-linux` and try again.で詰まった
# はじめに
学習用のメモとして投稿します。
Capistranoを使用して、Railsで作成したアプリをAWS EC2にデプロイをする機会がありました。
その際に遭遇したエラー\`bundle lock –add-platform x86_64-linux\` and try again.とその解決策について書いていきます。# Capistranoでデプロイ
色々と設定して、いざデプロイということで、次のコマンドを実行します。
“`zsh:
bundle exec cap production deploy
“`
・・・失敗しました。。エラーを見ると、次のような記載があります。
“`zsh:
# 略
Your bundle only supports platforms [“aarch64-linux”] but your local platform
is x86_64-linux. Add the current platform to the lockfile with
`bundle lock –add-platform x86_64-linux` and
S3 GlacierのデータをAthenaでクエリしてみた
# 背景・目的
先日、[Amazon Athena now supports querying restored data in S3 Glacier](https://aws.amazon.com/jp/about-aws/whats-new/2023/06/amazon-athena-querying-restored-data-s3-glacier/)が発表されました。今までは、Glacierのデータは、一度ストレージクラスを変更してからでないとAthenaで取り扱うことができませんでしたが、今回の発表により直接クエリを実行することが出来るようになったので、試してみました。
# まとめ
– Standardクラスにコピーしていたが、復元すればクエリできるようになりました。
– 下記が前提になります。
– Athena エンジンバージョン3
– Apache Hiveテーブル# 概要
>ログ分析や長期傾向分析などのユースケースで、データを Standard ストレージ クラスにコピーすることなく、S3 Glacier Flexible Retrieval
【初心者向け】AWSは怖くない!これだけ読めばAWSのアーキテクチャ図がわかるようになる〜後編〜
こちらはシリーズ記事の後編です。
前編はこちらからどうぞ。
[【初心者向け】AWSは怖くない!これだけ読めばAWSのアーキテクチャ図がわかるようになる〜前編〜](https://qiita.com/morihagi/items/620b5714892511cce595)# 前回の続き
ここでちょっと図を整理します。
・3層アーキテクチャの各層の名称を削除
・仮想サーバー(インスタンス)の領域を明確化
![スクリーンショット 2023-07-05 2.32.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348836/5ee73c74-725a-f077-5ee6-007ea5f769c4.png)# 世界中にあるAWSのサーバーの中で、どこにあるサーバーを使いたいですか?
AWSは世界各地にの主要な都市(`リージョン`)ごとに、複数のデータセンター群(`アベイラビリティゾーン`)([イメージ図](https://www.google.com/search?q=%E3%83%87%E3
ALB から S3 にアクセス(CDKのコード付き)
# 参考にしたのはこちら
https://aws.amazon.com/jp/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/
ただ、この例は`Internal`なALBを用意し、そこから、`Private Subnet` → `VPC Endpoint`+ privatelink → S3なので、別に`Public Subnet`に置いたALBでもいけたのが、今回の記事の内容です。
# 結論
VPC Endpoint(Interface)を使うとうまくいきました。ALB → `Vpc Endpoint`(Interface) → S3
https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/gateway-endpoints.html
# 何が嬉しいのか
– ALB → S3 間で認証を完結できる
SSO(シングルサインオン)等で、社内のみで見れるよ
AWS認定デベロッパーアソシエイト(DVA-C02) 合格体験記
# はじめに
将来的にAWSの6冠を達成したい、SAA取得後、若干期間が空いたということもあり、比較的難しいと言われているSOAの前にSAAよりは簡単と言われているDVAの取得をしようということで受験しました。# スコア
**849/1000**無事合格できました!
SAA受験時は時間いっぱいまで見直しやらフラグを立てた問題を悩んでたりしたのですが、今回は比較的見直しフラグの数も少なく、テストの実施と見直しで1時間弱くらいで終了しました。
SAAに比べてDVAの方が簡単?や問題の傾向もあると思いますが、前より各サービスの知見が若干深まり、ハンズオンをしたことでイメージしやすくなったのかなと考えています。# 受験対策
### 書籍
– 徹底攻略 AWS認定デベロッパーアソシエイト[DVA-C01] 教科書試験のバージョンは[DVA-C0**2**]なので、バージョンが古い。。。
バージョンが違うからと言って全く使わなかったわけではなく、
Code系などのあまり触れていないサービスなどについては主にこちらの書籍で勉強したり、調べたりもしてました。
最終的に、問題集実施前に
#7 作成したAMIから2つ目のEC2インスタンスを起動する
# はじめに
[#6で作成した](https://qiita.com/kokichi8/items/b6cff42945b902f57bf8)AMIから、以下の構成図の通り2つ目のインスタンスを作成します。
![ami-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/9931564f-5a68-38a1-7cf9-fdd6075b25e1.png)# 手順
設定値の指定
“`
#リージョンの指定
export AWS_DEFAULT_REGION=’ap-northeast-1′#ec2インスタンスのタグ名
EC2_INSTANCE_TAG_NAME=’handson-ec2-1st-instance’#起動時に利用するAMIイメージ名
EC2_INSTANCE_IMAGE_NAME=”cli-ami”#ec2インスタンスタイプ
EC2_INSTANCE_TYPE=”t2.micro”#ユーザデータファイル名
USER_DATA_NAME=’handson-ec2
#6 AWS CLIでAMIを作成する
# はじめに
AWS CLIでAMIを作成します。構成図は以下の通りです。
![ami.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/5df7a669-c793-7626-067e-60b7e36e97ec.png)# 手順
設定値の指定
“`
INS_ID=”i-xxxx ”
INS_NAME=”cli_ami”
“`
設定値の確認
“`
cat << END INS_ID="i-xxxx" INS_ID="${INS_ID}" INS_NAME="cli-ami" INS_NAME="${INS_NAME}" END ``` 処理の実行 `create-image`コマンドを使います。 `no-reboot`オプションを指定することで、AMI作成時にEC2の再起動を設定を**オフ**にします。 [参考](https://dev.classmethod.jp/articles/tsnote-ec2-create-image-no-reboot/) ``` aws ec2
【Terraform】AWS IAM構築用のmoduleを作成してみた
# はじめに
友人と飲みに行った際のトイレで IAM ロールの module の良い構築方法を思いついたので IAM ロールの module を作ることに。
何気ない時にぱっと思いついた案が採用されることってありますよね。。バージョンは以下の通り。
このバージョン以外での動作は確認してません。“`terraform
terraform {
required_version = “1.5.0”
required_providers {
aws = {
source = “hashicorp/aws”
version = “5.3.0”
}
}
}
“`
GitHubにソースコードを上げておりますので、もしよろしければ参考に。
⇒ [こちらをクリック](https://github.com/onishi-app/terraform)参考にしていただくためにGitHubに残しております。
いかなる損失が発生しても一切責任は負いませんのでよろしくお願いしますね。また、今回は別の s3 の module も使用しております
#4 AWS CLIでELBを作成する
# はじめに
AWS CLIでELBを構築する手順です。構成図は以下の通りです。
![elb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/a5dc9891-37d2-73dd-9bee-24db6b87121f.png)# 手順
## 1.ターゲットグループの作成設定値の指定(今回は手順3までの設定値を現時点で定義しています)
“`
## ターゲットグループ名
TARGET_GROUP_NAME=”target-cli”
## ターゲットグループのプロトコル
TARGET_GROUP_PROTCOL=”HTTP”
## ターゲットグループのポート
TARGET_GROUP_PORT=”80″## ヘルスチェックパス
HTALTH_CHECK_PATH=”/wp-includes/images/blank.gif”
## ヘルスチェックポート
HTALTH_CHECK_PORT=”80″
## ヘルスチェックプロトコル
HTALTH_CHECK_PROTCOL=”HTTP”