FCP 审计出版商
一个图书馆,用于验证和/或向财务和方案预算审计处公布财务和方案预算审计活动.
安装
npm install fcp-audit-publisher
使用量
无害环境管理
import { validateAuditEvent, publishAuditEvent } from '@defra/fcp-audit-publisher'
常见JS
const { validateAuditEvent, publishAuditEvent } = require('@defra/fcp-audit-publisher')
validateAuditEvent(event)
对照 FCP 审计事件计划验证 JSON 对象.
const result = validateAuditEvent({
correlationid: 'abc-123',
datetime: '2025-12-01T12:51:41.381Z',
environment: 'prod',
version: '1.0.0',
application: 'FCP001',
component: 'my-service',
ip: '192.168.1.100',
audit: {
entities: [{ entity: 'application', action: 'created', entityid: 'APP-001' }]
},
security: null
})
返回值
关于成功:
{ valid: true, value: { /* normalised event */ } }
失败时 :
{
valid: false,
errors: [
'"datetime" is required',
'"application" is required'
]
}
publishAuditEvent(event, config)
应用默认,验证事件,再将其发布到AWS SNS话题.
呼叫者负责建造和重用 SNSClient。 。 。 .
import { SNSClient } from '@aws-sdk/client-sns'
import { publishAuditEvent } from '@defra/fcp-audit-publisher'
const snsClient = new SNSClient({ region: 'eu-west-2' })
const result = await publishAuditEvent(
{
audit: {
entities: [{ entity: 'application', action: 'created', entityid: 'APP-001' }]
},
security: null
},
{
snsClient,
sns: { topicArn: 'arn:aws:sns:eu-west-2:123456789012:your-sns' },
application: 'FCP001',
component: 'my-service',
environment: 'prod',
ip: '192.168.1.100',
generateCorrelationId: true
}
)
console.log(result.messageId)
丢出一个 Error 如果配置无效,或默认后事件无效.
配置引用
| 选项 | 类型 | 需求 | 说明 |
|---|---|---|---|
snsClient | SNSClient | 对 | 预构 AWS SDK SNSClient 举个例子 打电话的人有自己的生命周期 |
sns.topicArn | 字符串 | 对 | SNS主题的 ARN 发布到 |
version | 字符串 | 没有 | 默认事件计划版本 。 被事件本身所压倒 version 字段 |
application | 字符串 | 没有 | 默认应用程序名称 。 被事件本身所压倒 application 字段 |
component | 字符串 | 没有 | 默认组件名称 。 被事件本身所压倒 component 字段 |
environment | 字符串 | 没有 | 默认环境. 被事件本身所压倒 environment 字段 |
ip | 字符串 | 没有 | 默认IP地址 。 被事件本身所压倒 ip 字段 |
generateCorrelationId | 布尔 | 没有 | 何时 true,生成 UUID v4 为 correlationid 如果事件没有 |
默认优先
对于可以默认的字段,从最低到最高的顺序是:
库默认 ~ 配置值 ~ 事件值
| 外地 | 库默认 | 配置覆盖 | 页:1 |
|---|---|---|---|
version | '1.0.0' | config.version | |
datetime | new Date().toISOString() | —— 说 | 仅在缺席时才适用 |
correlationid | —— 说 | generateCorrelationId: true 生成一个 UUID | 仅在缺席时才适用 |
application | —— 说 | config.application | |
component | —— 说 | config.component | |
environment | —— 说 | config.environment | |
ip | —— 说 | config.ip | 只能用于报告自己IP地址的服务,ie Cron工作或背景服务. 处理用户或其他服务的请求时不会. |
eventSchema
内部使用的原乔伊计划 validateAuditEvent导出于 fcp-audit 仅服务.
import { eventSchema } from '@defra/fcp-audit-publisher'
其他消费者不应直接进口或依赖这种产品——使用 validateAuditEvent编号 :publishAuditEvent 换句话说.
事件计划
所有事件必须满足以下计划(通过Joi认证): :
| 外地 | 类型 | 需求 | 制约因素 |
|---|---|---|---|
correlationid | 字符串 | 对 | 最大 50 个字符 |
datetime | ISO 日期字符串 | 对 | |
environment | 字符串 | 对 | 小写, 最大 20 个字符 |
version | 字符串 | 对 | 最大 10 个字符 |
application | 字符串 | 对 | 最大 30 个字符 |
component | 字符串 | 对 | 最大 30 个字符 |
ip | 字符串 | 对 | 最大 20 个字符 |
user | 字符串 | 没有 | 最大 50 个字符 |
sessionid | 字符串 | 没有 | 最大 50 个字符 |
audit | 对象或无效 | 无* | 见下文审计计划 |
security | 对象或无效 | 无* | 见下文安全计划 |
* 至少其中一个 audit 或者说 security 必须是在场的,而不是无名的.
audit 对象
| 外地 | 类型 | 需求 | 制约因素 |
|---|---|---|---|
entities | 数组 | 对 | 分钟 1项 |
entities[].entity | 字符串 | 对 | 小写,最大120个字符 |
entities[].action | 字符串 | 对 | 小写,最大120个字符 |
entities[].entityid | 字符串 | 没有 | 最大 120 个字符 |
accounts | 对象 | 没有 | 键 : sbi, (中文(简体) ), frn, (中文(简体) ), vendor, (中文(简体) ), trader, (中文(简体) ), organisationId, (中文(简体) ), crn, (中文(简体) ), personId |
status | 字符串 | 没有 | 最大 120 个字符 |
details | 对象 | 没有 | 自由窗体 |
security 对象
| 外地 | 类型 | 需求 | 制约因素 |
|---|---|---|---|
pmccode | 字符串 | 对 | 最大 4 个字符( 断开连字符) |
priority | 整数 | 没有 | 默认为 0 |
details.transactioncode | 字符串 | 没有 | 最大 4 个字符 |
details.message | 字符串 | 没有 | 最大 120 个字符 |
details.additionalinfo | 字符串 | 没有 | 最大 120 个字符 |
许可证
本资料系根据下列公开政府规定公布: http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3 互联网档案馆的存檔,存档日期2013-12-21