我正在尝试使用本地卷来存储数据来运行AWS DynamoDB服务的docker映像。当我尝试创建我的第一个表时,我得到以下顺序,重复直到最终脚本失败。
dynamodb-local | Aug 31, 2022 3:32:49 PM com.almworks.sqlite4java.Internal log
dynamodb-local | WARNING: [sqlite] SQLiteQueue[shared-local-instance.db]: stopped abnormally, reincarnating in 3000ms
dynamodb-local | Aug 31, 2022 3:32:52 PM com.almworks.sqlite4java.Internal log
dynamodb-local | WARNING: [sqlite] cannot open DB[5]: com.almworks.sqlite4java.SQLiteException: [14] unable to open database file
dynamodb-local | Aug 31, 2022 3:32:52 PM com.almworks.sqlite4java.Internal log
dynamodb-local | SEVERE: [sqlite] SQLiteQueue[shared-local-instance.db]: error running job queue
dynamodb-local | com.almworks.sqlite4java.SQLiteException: [14] unable to open database file
dynamodb-local | at com.almworks.sqlite4java.SQLiteConnection.open0(SQLiteConnection.java:1480)
dynamodb-local | at com.almworks.sqlite4java.SQLiteConnection.open(SQLiteConnection.java:282)
dynamodb-local | at com.almworks.sqlite4java.SQLiteConnection.open(SQLiteConnection.java:293)
dynamodb-local | at com.almworks.sqlite4java.SQLiteQueue.openConnection(SQLiteQueue.java:464)
dynamodb-local | at com.almworks.sqlite4java.SQLiteQueue.queueFunction(SQLiteQueue.java:641)
dynamodb-local | at com.almworks.sqlite4java.SQLiteQueue.runQueue(SQLiteQueue.java:623)
dynamodb-local | at com.almworks.sqlite4java.SQLiteQueue.access$000(SQLiteQueue.java:77)
dynamodb-local | at com.almworks.sqlite4java.SQLiteQueue$1.run(SQLiteQueue.java:205)
dynamodb-local | at java.lang.Thread.run(Thread.java:750)
我的docker-compose文件基于AWS文档中的文件(https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html)
version: "3.9" # optional since v1.27.0
services:
server:
build:
context: ./server/
dockerfile: Dockerfile.consumer
ports:
- "5558:5558"
depends_on:
- "dynamodb-local"
environment:
AWS_ACCESS_KEY_ID: 'DUMMYIDEXAMPLE'
AWS_SECRET_ACCESS_KEY: 'DUMMYEXAMPLEKEY'
dynamodb-local:
image: "amazon/dynamodb-local:latest"
ports:
- "8000:8000"
volumes:
- "data:/home/dynamodblocal/data"
command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
container_name: dynamodb-local
working_dir: /home/dynamodblocal
volumes:
logvolume01: {}
data: {}
下面是我正在创建的表
import boto3
from pprint import pprint
from botocore.exceptions import ClientError
TABLE_NAME = "check_tbl"
dynamodb = boto3.client(
'dynamodb',
region_name="us-east-1",
aws_access_key_id="dummy_access_key",
aws_secret_access_key="dummy_secret_key",
endpoint_url="http://localhost:8000",
)
try:
response = dynamodb.describe_table(TableName=TABLE_NAME)
except ClientError as ce:
if ce.response['Error']['Code'] == 'ResourceNotFoundException':
result = dynamodb.create_table(
TableName=TABLE_NAME,
KeySchema=[
{
'AttributeName': 'id',
'KeyType': 'HASH' # Partition key
}
],
AttributeDefinitions=[
{
'AttributeName': 'timestamp',
'AttributeType': 'D'
}
],
ProvisionedThroughput={
'ReadCapacityUnits': 10,
'WriteCapacityUnits': 10
}
)
else:
print("Unknown exception occurred while querying for the " + TABLE_NAME + " table. Printing full error:")
pprint(ce.response)
我的卷路径(/var/lib/docker/volumes/data)属于root用户,但这似乎不太可能。
1条答案
按热度按时间hmae6n7t1#
我得到了同样的错误,它是通过将我的用户添加到由图像创建的文件夹中来解决的: