第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 Golang Fargate 任務(wù)中訪問 DynamoDB

在 Golang Fargate 任務(wù)中訪問 DynamoDB

Go
慕田峪9158850 2023-07-26 17:27:28
我正在嘗試從我的 Fargate 任務(wù)訪問 DynamoDB,該任務(wù)是用 golang 編寫的。我得到的只是超時(shí)。我缺少什么?我使用 AWS 實(shí)驗(yàn)室的 Cloudformation 模板以及允許完全 DynamoDB 訪問的任務(wù)角色。它是最簡單的公有子網(wǎng)模板加上 Fargate 模板。我嘗試添加 VPC 終端節(jié)點(diǎn),但沒有什么區(qū)別。在我的機(jī)器上運(yùn)行該任務(wù)是有效的。在本地和 AWS 上運(yùn)行具有(或多或少)相同功能的 Python (Flask) 任務(wù)。這是相同的設(shè)置,我只是更改了任務(wù)圖像。這是代碼:package mainimport (? ? "context"? ? "fmt"? ? "github.com/aws/aws-sdk-go-v2/aws/endpoints"? ? "github.com/aws/aws-sdk-go-v2/aws/external"? ? "github.com/aws/aws-sdk-go-v2/service/dynamodb"? ? "github.com/gin-gonic/gin"? ? "time")var db *dynamodb.Clientfunc init() {? ? cfg, err := external.LoadDefaultAWSConfig()? ? if err != nil {? ? ? ? panic("unable to load SDK config, " + err.Error())? ? }? ? cfg.Region = endpoints.UsEast2RegionID? ? db = dynamodb.New(cfg)}func main() {? ? fmt.Println("go!")? ? router := gin.New()? ? router.Use(gin.Recovery())? ? router.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{"msg": "pong"}) })? ? router.GET("/pong", func(c *gin.Context) {? ? ? ? req := db.ListTablesRequest(&dynamodb.ListTablesInput{})? ? ? ? ctx := context.Background()? ? ? ? ctx, cancelFn := context.WithTimeout(ctx, time.Second*5)? ? ? ? defer cancelFn()? ? ? ? res, err := req.Send(ctx)? ? ? ? if err != nil {? ? ? ? ? ? c.JSON(400, gin.H{"msg": "Fail", "error": err.Error()})? ? ? ? ? ? return? ? ? ? }? ? ? ? c.JSON(200, gin.H{"msg": fmt.Sprint(res)})? ? ? ? return? ? })? ? router.Run()}暫停:helles:v2> curl? xyz.us-east-2.elb.amazonaws.com/pong{"error":"RequestCanceled: request context canceled\ncaused by: context deadline exceeded","msg":"Fail"}預(yù)期的:helles:v2> curl 127.0.0.1:8080/pong{"msg":"{\n? TableNames: [\"OneTable\",\"OtherTable\"]\n}"}Python 進(jìn)行比較:#!/usr/bin/env python3from flask import Flaskimport boto3dynamodb = boto3.client("dynamodb")app = Flask(__name__)@app.route("/ping")def index():? ? return "pong"@app.route("/pong")def pong():? ? return dynamodb.list_tables()if __name__ == "__main__":? ? app.run(debug=True, host="0.0.0.0", port=8080)結(jié)果有點(diǎn)不同,添加了元數(shù)據(jù),但表名稱在那里。
查看完整描述

2 回答

?
素胚勾勒不出你

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊

問題出在使用的 Docker 基礎(chǔ)鏡像上。你的 Dockerfile 是:


FROM scratch

ADD ./build/api/api /

EXPOSE 8080

ENTRYPOINT ["/api"]

使用靜態(tài)鏈接的可執(zhí)行文件。


改變FROM scratch以FROM gcr.io/distroless/base使其發(fā)揮作用。


我的猜測是,應(yīng)用程序/dynamodb 客戶端無法在沒有基本映像缺失部分的情況下解析服務(wù)地址。



查看完整回答
反對(duì) 回復(fù) 2023-07-26
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

超時(shí)通常是網(wǎng)絡(luò)問題。您是否檢查了 ECS 任務(wù)和 Dynamo DB 使用的安全組。需要確保您已設(shè)置規(guī)則,以便在正確的端口上從 ECS 傳出并進(jìn)入 DynamoDB。

您說您在 VPC 中為 Dynamo 設(shè)置了一個(gè)終端節(jié)點(diǎn)。您的 OP 不清楚您是嘗試連接到私有 VPC 中的私有端點(diǎn)還是嘗試通過公共互聯(lián)網(wǎng)。如果您嘗試通過公共互聯(lián)網(wǎng),您還需要檢查您的 ECS 任務(wù)是否位于具有通往公共互聯(lián)網(wǎng)的 NAT 網(wǎng)關(guān)的 VPC 中。您似乎正在嘗試通過 127.0.0.1 或 ELB DNS 連接到 DynamoDB 服務(wù),這對(duì)我來說沒有意義。


查看完整回答
反對(duì) 回復(fù) 2023-07-26
  • 2 回答
  • 0 關(guān)注
  • 161 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)