小编Cog*_*Sum的帖子

如何使用 Terraform 获取 AWS Lambda ARN?

我正在尝试定义一个返回 Lambda 函数的 ARN 的 terraform 输出块。Lambda 在子模块中定义。根据文档,lambda 似乎应该已经有一个 ARN 属性:https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/lambda_function#arn

使用它作为来源,我认为我应该能够执行以下操作:

output "lambda_arn" {
  value = module.aws_lambda_function.arn
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

Error: Unsupported attribute

  on main.tf line 19, in output "lambda_arn":
  19:   value = module.aws_lambda_function.arn

This object does not have an attribute named "arn".
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何意见,谢谢。

aws-lambda terraform

10
推荐指数
1
解决办法
8391
查看次数

是否可以在 EFS 中可靠地使用 SQLite?

是否可以在AWS EFS中安全地使用SQLite?在我试图确定这是否可行的阅读中,似乎有一些暗示,自从 AWS EFS 早在 2017 年就实现了 NFSv4 以来,它应该是可行的。实际上,我没有运气从中获得一致的行为。

快速要点:

  1. “只使用 AWS RDS”:由于另一个团队实施的其他 AWS 架构存在问题,我们正在尝试解决 API 导致的资源匮乏问题(DynamoDB 不是一个选项)
  2. “这违背了 SQLite 的主要用例(作为本地访问数据库):是的,但考虑到这种情况,这似乎是最好的方法。
  3. 我已验证我们正在 EC2 实例上运行 nfsv4

无论我使用哪种方法,当前结果都与遇到的 3 个异常非常不一致

  1. “文件已加密或不是数据库”
  2. “磁盘 I/O 错误(可能与 EFS 打开文件限制有关)”
  3. “数据库磁盘映像格式错误”(此后数据库实际上并未损坏)

数据库代码:

SQLITE_VAR_LIMIT = 999
dgm_db_file_name = ''
db = SqliteExtDatabase(None)
lock_file = f'{os.getenv("efs_path", "tmp")}/db_lock_file.lock'


def lock_db_file():
    with open(lock_file, 'w+') as lock:
        limit = 900
        while limit:
            try:
                fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB)
                print(f'db locked')
                break
            except Exception as e:
                print(f'Exception: {str(e)}')
                limit -= 1
                time.sleep(1)

    if …
Run Code Online (Sandbox Code Playgroud)

sqlite amazon-web-services python-3.x peewee amazon-efs

4
推荐指数
1
解决办法
2399
查看次数