第 1 步:创建新的分类账 - Amazon Quantum Ledger Database (Amazon QLDB)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

第 1 步:创建新的分类账

在此步骤中,您将创建一个名为 vehicle-registration 的新 Amazon QLDB 分类账。

创建新的分类账
  1. 查看以下文件 (constants.py),其包含本教程中所有其他程序使用的常量值。

    # Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 # # Permission is hereby granted, free of charge, to any person obtaining a copy of this # software and associated documentation files (the "Software"), to deal in the Software # without restriction, including without limitation the rights to use, copy, modify, # merge, publish, distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. class Constants: """ Constant values used throughout this tutorial. """ LEDGER_NAME = "vehicle-registration" VEHICLE_REGISTRATION_TABLE_NAME = "VehicleRegistration" VEHICLE_TABLE_NAME = "Vehicle" PERSON_TABLE_NAME = "Person" DRIVERS_LICENSE_TABLE_NAME = "DriversLicense" LICENSE_NUMBER_INDEX_NAME = "LicenseNumber" GOV_ID_INDEX_NAME = "GovId" VEHICLE_VIN_INDEX_NAME = "VIN" LICENSE_PLATE_NUMBER_INDEX_NAME = "LicensePlateNumber" PERSON_ID_INDEX_NAME = "PersonId" JOURNAL_EXPORT_S3_BUCKET_NAME_PREFIX = "qldb-tutorial-journal-export" USER_TABLES = "information_schema.user_tables" S3_BUCKET_ARN_TEMPLATE = "arn:aws:s3:::" LEDGER_NAME_WITH_TAGS = "tags" RETRY_LIMIT = 4
  2. 使用以下程序 (create_ledger.py) 创建名为 vehicle-registration 的分类账。

    # Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 # # Permission is hereby granted, free of charge, to any person obtaining a copy of this # software and associated documentation files (the "Software"), to deal in the Software # without restriction, including without limitation the rights to use, copy, modify, # merge, publish, distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # This code expects that you have AWS credentials setup per: # https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html from logging import basicConfig, getLogger, INFO from time import sleep from boto3 import client from pyqldbsamples.constants import Constants logger = getLogger(__name__) basicConfig(level=INFO) qldb_client = client('qldb') LEDGER_CREATION_POLL_PERIOD_SEC = 10 ACTIVE_STATE = "ACTIVE" def create_ledger(name): """ Create a new ledger with the specified name. :type name: str :param name: Name for the ledger to be created. :rtype: dict :return: Result from the request. """ logger.info("Let's create the ledger named: {}...".format(name)) result = qldb_client.create_ledger(Name=name, PermissionsMode='ALLOW_ALL') logger.info('Success. Ledger state: {}.'.format(result.get('State'))) return result def wait_for_active(name): """ Wait for the newly created ledger to become active. :type name: str :param name: The ledger to check on. :rtype: dict :return: Result from the request. """ logger.info('Waiting for ledger to become active...') while True: result = qldb_client.describe_ledger(Name=name) if result.get('State') == ACTIVE_STATE: logger.info('Success. Ledger is active and ready to use.') return result logger.info('The ledger is still creating. Please wait...') sleep(LEDGER_CREATION_POLL_PERIOD_SEC) def main(ledger_name=Constants.LEDGER_NAME): """ Create a ledger and wait for it to be active. """ try: create_ledger(ledger_name) wait_for_active(ledger_name) except Exception as e: logger.exception('Unable to create the ledger!') raise e if __name__ == '__main__': main()
    注意
    • create_ledger 调用中,您必须指定分类账名称和权限模式。我们建议使用 STANDARD 权限模式来最大限度地提高分类账数据的安全性。

    • 创建分类账时,将默认启用 删除保护。QLDB 中有一项功能,可防止分类账被任何用户删除。您可以选择使用 QLDB API 或 AWS Command Line Interface (AWS CLI) 在创建分类账时禁用删除保护。

    • 您还可选择指定要附加到分类账的标签。

  3. 要运行该程序,请输入以下命令。

    python create_ledger.py

要验证您与新分类账的连接,请继续 步骤 2:测试分类账的连接性