❤️‍🔥

【AWS】Amazon LinuxでのPython環境構築とSlack連携

2024/12/19に公開

Amazon Linux上でPython環境を構築し、Slackへの通知を連携する方法を解説します。この記事では、仮想サーバー(EC2)を利用して、Python環境のセットアップから実際にSlack通知を行うまでの流れを具体的なコード例とともに紹介します。

概要 ☁️

この記事に記載していること:
1.Amazon Linuxへのssh接続
2.Python環境のインストールと設定
3.必要なライブラリのインストール
4.Slack連携用のwebhook設定
5.PythonスクリプトでのSlack通知


1.Amazon Linuxへのssh接続 ⚡️

まずはEC2インスタンスにsshで接続します。以下のコメントで接続してください。

ssh -i "<秘密鍵ファイル>.pem" ec2-user@<インスタンスのパブリックIP>

ポイント

  • <秘密鍵ファイル>.pemには、インスタンス作成時にダウンロードしたキーファイルを使用します。
  • <インスタンスのパブリックIP>はAWSコンソールから確認できます。
    接続が成功すると、次のようなプロンプトが表示されます。
[ec2-user@ip-<インスタンスのIP> ~]$

2.GitHubリポジトリをクローン化 👀

Gitのインストール

リポジトリをクローンするために、Gitをインストールします。

# Gitのインストール
sudo yum install git -y

# インストール確認
git --version

ssh keyの設定  🗝️

Githubリポジトリへのアクセスを許可するためにsshキーを設定します。

# SSHキーの生成
ssh-keygen -t ed25519 -C "your_email@example.com"

# SSHエージェントの開始
eval "$(ssh-agent -s)"

# SSHキーをエージェントに追加
ssh-add ~/.ssh/id_ed25519

# 公開鍵の表示
cat ~/.ssh/id_ed25519.pub

生成された公開鍵をGitHubに登録します。

  1. GitHubにログイン
  2. SettingSSH and GPG keysNew SSH key
  3. 公開鍵を貼り付けて保存

リポジトリのクローン化

登録が完了したら、リポジトリをクローンします。

# リポジトリをクローン
git clone git@github.com:your_username/your_repository.git

# ディレクトリ移動
cd your_repository

3.Pytohn環境のインストールと設定 🚴‍♂️

Amazon LinuxではPytohnがデフォルトでインストールされていますが、最新バージョンを使用するために手動で設定します。

Python3のインストール

sudo yum update -y
sudo amazon-linux-extras enable python3.8
sudo yum install python3.8 -y

pipのインストール

Pythonライブラリを管理するためのpipwpインストールします。

sudo yum install python3-pip -y
pip3 install --upgrade pip

インストール後、次のコマンドでバージョンを確認してください。

python3 --version
pip3 --version

4.必要なライブラリのインストール 👣

Pythonで作成したファイルを実行するために必要なライブラリをインストールします。

必要なライブラリ

  • requests
    以下のコマンドでインストールします。
pip3 install requests python-dotenv

5.Slack Webhookとの連携 🚀

今回のAWSでのssh接続方法としては少し話が逸れますが、今回作成したpytohnファイルの中にSlack Webhookとの連携を行なっているものがありますのでこちらで紹介します。

今回のPythonの中身

  • JLP tokenのスクレイピングをしたい(定期実行)
  • CSVに書き出してGoogle スプレッドシートに反映(定期実行:10分毎)

といったものなのでどこでエラーが起きたか分かりやすくするためにエラー通知をSlackのAPIを使いワークスペースに書き込みが行われるようにしました。
ここではその設定方法についてお話しします。

ドットファイルの作成

PythonでSlack webhookを利用するために.envファイルを作成します。

nano .env

Slack Webhookは権限が強いものなので環境変数に格納するようにすると安全です。

Pythonコードの書き方

Slack Webhookを使用したスクリプトを作成します。

import requests
from dotenv import load_dotenv
import os

# 環境変数の読み込み
load_dotenv()
webhook_url = os.getenv("SLACK_WEBHOOK_URL")

def send_slack_message(message):
    payload = {"text": message}
    response = requests.post(webhook_url, json=payload)
    if response.status_code == 200:
        print("Message sent successfully.")
    else:
        print(f"Failed to send message. Status code: {response.status_code}")

# テスト
send_slack_message("Hello from Amazon Linux!")

5.時間ゾーンを設定 ⌛️

時間ゾーンの変更

先ほども少しお話ししたように今回のスクリプトのメインはスクレイピングなので、時刻の書き出しが重要になります。Amazon Linuxでは初期設定でUTCになっています。JSTに変更する方法を下記に述べます。

# 現在の時間ゾーンを確認
sudo timedatectl

# 時間ゾーンをJSTに変更
sudo timedatectl set-timezone Asia/Tokyo

# 変更を確認
sudo timedatectl

終わりに 🙇

Amazon LinuxでのPython環境構築とSlack連携、さらにGitHubリポジトリのクローン化手順を解説しました。これらの手順を応用することで、開発やインフラ構築を効率化できます。本記事があなたのプロジェクトに役立つことを願っています。

Discussion