皆様こんにちは。
この記事は ハンズラボ AdventCalendar2022 3日目です!
宜しくお願い致します。
はじめに
近年円安影響をもろに受けているクラウドサービスですが、仕事で使う方は必須のツールになってる場合も多いと思います。
私の場合はAWSが一番良く利用しますが、いかんせん会社のアカウントだと気軽に検証出来なかったりします!
そこで今回の表題であるAWSの各サービスを再現できるツール「LocalStack」を試してみようとおもいます!
今回のトピックは下記です。
- LocalStack導入の前準備
- LocalStack導入
- LocalStackの設定
- LocalStackでS3を立ち上げてみた
LocalStack導入の前準備
LocalStackを動作させるのに必要なサービスは下記の通りです。
python (Python 3.7 up to 3.10 is supported)
pip (Python package manager)
docker
WSLのUbuntuバージョン確認
root@DPC-01:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
Python3はUbuntuにデフォルトで入っていたのでバージョン確認とpip, dockerが入っていないことを確認
root@DPC-01:~# python3 --version
Python 3.10.6
root@DPC-01:~# pip --version
Command 'pip' not found, but can be installed with:
apt install python3-pip
root@DPC-01:~# docker --version
Command 'docker' not found, but can be installed with:
apt install docker.io # version 20.10.12-0ubuntu4, or
apt install podman-docker # version 3.4.4+ds1-1ubuntu1
python3-pip install
root@DPC-01:~# apt install python3-pip
<中略>
root@DPC-01:~# pip --version
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
docker install
root@DPC-01:~# curl https://get.docker.com | sh
<中略>
root@DPC-01:~# docker --version
Docker version 20.10.21, build baeda1f
root@DPC-01:~# service docker start
* Starting Docker: docker [ OK ]
LocalStack導入
事前準備が完了したのでLocalStack install
root@DPC-01:~# pip install localstack
<中略>
root@DPC-01:~# localstack --version
1.3.0
LocalStack startをスタートし、利用できるサービスを確認します
root@DPC-01:~# localstack start -d
__ _______ __ __
/ / ____ _________ _/ / ___// /_____ ______/ /__
/ / / __ \/ ___/ __ `/ /\__ \/ __/ __ `/ ___/ //_/
/ /___/ /_/ / /__/ /_/ / /___/ / /_/ /_/ / /__/ ,<
/_____/\____/\___/\__,_/_//____/\__/\__,_/\___/_/|_|
💻 LocalStack CLI 1.3.0
<中略>
root@DPC-01:~# localstack status services
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Service ┃ Status ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ acm │ ✔ available │
│ apigateway │ ✔ available │
│ cloudformation │ ✔ available │
│ cloudwatch │ ✔ available │
│ config │ ✔ available │
│ dynamodb │ ✔ available │
│ dynamodbstreams │ ✔ available │
│ ec2 │ ✔ available │
│ es │ ✔ available │
│ events │ ✔ available │
│ firehose │ ✔ available │
│ iam │ ✔ available │
│ kinesis │ ✔ available │
│ kms │ ✔ available │
│ lambda │ ✔ available │
│ logs │ ✔ available │
│ opensearch │ ✔ available │
│ redshift │ ✔ available │
│ resource-groups │ ✔ available │
│ resourcegroupstaggingapi │ ✔ available │
│ route53 │ ✔ available │
│ route53resolver │ ✔ available │
│ s3 │ ✔ available │
│ s3control │ ✔ available │
│ secretsmanager │ ✔ available │
│ ses │ ✔ available │
│ sns │ ✔ available │
│ sqs │ ✔ available │
│ ssm │ ✔ available │
│ stepfunctions │ ✔ available │
│ sts │ ✔ available │
│ support │ ✔ available │
│ swf │ ✔ available │
│ transcribe │ ✔ available │
└──────────────────────────┴─────────────┘
LocalStackの設定
aws cliのラッパーであるawslocalをinstall
root@DPC-01:~# pip install awscli-local[ver1]
<中略>
root@DPC-01:~# awslocal --version
aws-cli/1.27.20 Python/3.10.6 Linux/5.15.74.2-microsoft-standard-WSL2 botocore/1.29.20
ここまでで、ひとまずLocalStackの導入は完了です!
LocalStackでS3を立ち上げてみた
LocalStackで一番手頃なS3を立ち上げて検証
- Backet名:test-backet
root@DPC-01:~# awslocal s3api create-bucket --bucket test-backet
{
"Location": "/test-backet"
}
root@DPC-01:~# awslocal s3 ls
2022-12-02 13:39:30 test-backet
バケットができたので試しにローカルのファイルをアップロードしてみます
root@DPC-01:~# vi test.txt
root@DPC-01:~# cat test.txt
test.file
root@DPC-01:~# awslocal s3 ls
2022-12-02 13:39:30 test-backet
root@DPC-01:~# awslocal s3 cp test.txt s3://test-backet
upload: ./test.txt to s3://test-backet/test.txt
root@DPC-01:~# awslocal s3 ls
2022-12-02 13:39:30 test-backet
root@DPC-01:~# awslocal s3 ls test-backet
2022-12-02 13:45:42 10 test.txt
今度はあっぷしたファイルが取り出せるか試してみます
root@DPC-01:~# rm test.txt
root@DPC-01:~# awslocal s3 cp s3://test-backet/test.txt ./
download: s3://test-backet/test.txt to ./test.txt
root@DPC-01:~# cat test.txt
test.file
おわりに
今回はWSL環境での構築メインでざっくりLocalStackの導入について記事を書かせて頂きました。
本当はEC2の立ち上げなどをやりたかったのですが、ネットワーク設定など色々設定が必要なので今回はあくまでも導入してすぐ試せるサービスということで、
S3に絞って検証を実施しました。
いずれEC2を立ててみたという記事も作成できればと思っております。
この記事が皆様の参考になれば幸いです。
参考
公式ドキュメント
https://docs.localstack.cloud
公式GitHub
https://github.com/localstack/localstack