質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

128閲覧

AWS Lambda(Python 3.13)にてAuroraのスナップショットをS3に保存したいが同一VPC内のAurora(MySQL)にアクセスできない

ZSJNSK

総合スコア1

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2024/11/18 04:07

編集2024/11/19 05:39

実現したいこと

Lambda(Python 3.13)にてAuroraのスナップショットをS3に保存したい

発生している問題・分からないこと

以下の設定/ソースでLambdaをテストすると
おおむね1分30秒~2分の間で、rdsのコネクションタイムアウトが発生する。

①Lambda関数ソースコード
※ IamRoleArn、KmsKeyIdは、記載内容に沿った値を指定
※ スナップショット、S3バケットは作成済み

ソースコードは、ソースコード欄に記載

②各種リソース設定
※ 特定リージョンに属するリソースは全て「ap-northeast-1」

1.Aurora  1).クラスタ    (1).識別子:testdb-1    (2).エンジンバージョン:5.7.mysql_aurora.2.11.5    (3).ロール:rdsroll    (4).接続されたコンピューティングリソース:なし    (5).プロキシ:なし  2).インスタンス    (1).識別子:testdb-1-instance-1    (2).VPC:vpc-1    (3).サブネット:subnet-1    (4).セキュリティグループ:sg-1 2.Lambda  1).関数名:testlambda   (1).ランタイム:Python 3.13   (2).アーキテクチャ:arm64   (3).タイムアウト:15分   (4).ロール:lambdaroll   (5).VPC:vpc-1   (6).サブネット:subnet-1   (7).セキュリティグループ:sg-1 3.セキュリティグループ  1).名前:sg-1   (1).インバウンドルール:すべてのトラフィック、プロトコル、ポート   (2).アウトバウンドルール:すべてのトラフィック、プロトコル、ポート 4.ロール  1).ロール名:rdsroll   (1).紐づくポリシーに含まれる許可    ・rds:*    ・s3:*    ・一部省略   (2).許可リソース:*   (3).信頼関係:rds.amazonaws.com、export.rds.amazonaws.com  2).ロール名:lambdaroll   (1).紐づくポリシーに含まれる許可    ・rds:*    ・s3:*    ・一部省略   (2).許可リソース:*   (3).信頼関係:rds.amazonaws.com、export.rds.amazonaws.com、lambda.amazonaws.com

エラーメッセージ

error

1"errorMessage": "Connect timeout on endpoint URL: \"https://rds.ap-northeast-1.amazonaws.com/\"" 2"errorType": "ConnectTimeoutError"

該当のソースコード

Python

1rds = boto3.client('rds', region_name="ap-northeast-1") 2response = rds.start_export_task( 3 ExportTaskIdentifier='snapshot'+datetime.now().strftime("%Y-%m-%d-%H-%M"), 4 SourceArn='arn:aws:rds:ap-northeast-1:************:cluster-snapshot:test-snapshot', 5 S3BucketName=os.environ['S3_BUCKETNAME'], 6 S3Prefix=os.environ['S3_OBJECTNAME'], 7 IamRoleArn=os.environ['rdsrollと同様'], 8 KmsKeyId=os.environ['testdb-1に紐づくkms'] 9)

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

ルーティング設定や、権限回りは確認/設定の上で実行したが、解消せず

補足

別途、同Lambda関数から、pymysqlでSQLクエリを実行すると、
こちらは正常に結果を取得できました。
(SELECT, INSERT, DELETEを実行)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mike2mike4

2024/11/18 10:58

Lambdaによって書き込むということですが、S3にファイル作れますでしょうか?
ZSJNSK

2024/11/19 00:05

mike2mike4 さん コメントいただき、ありがとうございます。 AWSのコンソールで、画面から操作した限りでは正常にファイルを格納できました。 手動でスナップショット取得→手動でエクスポート実行 (対象のS3はLambdaで書き込もうとしているS3と同一) を試してみましたが、こちらは正常に実行できました。
ZSJNSK

2024/11/19 00:10

また、 別途、pymysqlにてクエリを実行したところ、こちらはうまく行きましたので、 補足を追記致しました。
mike2mike4

2024/11/19 01:53

あ、マネコンからファイルが作れるかではなくて、Lambdaから作れるかです。Lambdaの権限(IAMとS3バケットポリシー)が知りたいです。
ZSJNSK

2024/11/19 02:16

失礼いたしました。LambdaからS3への保存は成功しております。 参考にした記事:https://qiita.com/oizumi-yuta/items/546e1f6a770b24af04bd 原因を探る過程で権限回りでこけないよう、 一旦AuroraクラスタとLambdaには強い権限をつけておりました。 いずれにも以下の許可をつけております。 (iam以降の許可は、s3:*,rds:*の依存関係をクリアするためだけにつけているものとなります) "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "rds:*", "s3:*", "iam:CreateServiceLinkedRole", "iam:PassRole", "kms:CreateGrant", "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey", "mediaimport:CreateDatabaseBinarySnapshot", "secretsmanager:CreateSecret", "secretsmanager:RotateSecret", "secretsmanager:TagResource" ], "Resource": "*"
ZSJNSK

2024/11/19 03:40

大変申し訳ありません。情報が不足しておりました。 それぞれのロールに以下のポリシーもアタッチしております。  ・AmazonS3FullAccess  ・AmazonRDSFullAccess
mike2mike4

2024/11/19 10:42

このエラーは、Lambda 関数が VPC 内で実行されており、外部の AWS サービスエンドポイント(この場合は RDS API エンドポイント)へのアクセスができないために発生しています。 私はS3を疑ってましたが、エラーメッセージからRDSに接続できないとのことです。ChatGPTの回答ですが、質問ではLambdaとRDSは同一VPC,同一サブネットのようですね。間違いありませんか?
ZSJNSK

2024/11/20 01:15

ありがとうございます。 LambdaとRDSは同一VPC,同一サブネットになっております。 pymysqlを利用した単発のSQLクエリの発行はうまくいっているため、 ネットワーク関連の設定は正常にできている、、、と考えてはいるものの boto3.client('rds', region_name="ap-northeast-1") からの 各関数(start_export_taskなど)の実行がタイムアウトしてしまっており、 解決の糸口が見つかっていない状況となります。 ※ boto3.client('rds') にして試してもみましたが、こちらもうまくいかずでした。
ZSJNSK

2024/11/20 07:11

mike2mike4 さん タイムアウトそのものの原因特定はできなかったものの、 LambdaのVPC設定を外したところ、エクスポート処理が動作致しました。 ということは、VPCの設定に誤りがあったということですが コンソールから見る限り 確かにRDS側と同じサブネット/インバウンドルール/アウトバウンドルールが設定されており、 怪しいポイントを見つけらませんでした。 ただ、一旦うまく動いたため、VPCを設定しない方向で実装することと致しました。 事象についてご確認いただき、誠にありがとうございました。
guest

回答1

0

自己解決

タイムアウトの原因特定には至らなかったものの、VPC設定を外すことにより正常動作を確認。
エクスポート処理自体がうまく動いたため、解決と致します。

投稿2024/11/20 07:12

ZSJNSK

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問